1 Star 0 Fork 0

Mark / springboot-shiro

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Shiro核心API

  • Subject: 用户主体(把操作交给SecurityManager)
  • SecurityManager: 安全管理器(关联Realm)
  • Realm:Shiro连接数据的桥梁

Springboot整合Shiro

  1. 导入依赖
<!--shiro依赖-->
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
    <version>1.4.0</version>
</dependency>
  1. 写一个Realm.java
package com.mark.springbootshiro.shiro;

import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;

/**
 * @Author: MARK
 * @Date: 2019/8/22 08:07
 * @Version: 1.0.0
 * @Description: 自定义Realm
 */
public class UserRealm extends AuthorizingRealm {
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        System.out.println("执行授权逻辑");
        return null;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        System.out.println("执行认证逻辑");
        return null;
    }
}
  1. 编写配置类 ShiroConfig.java
package com.mark.springbootshiro.shiro;

import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: MARK
 * @Date: 2019/8/22 08:05
 * @Version: 1.0.0
 * @Description: Shiro配置类
 */
@Configuration
public class ShiroConfig {
    /**
     * @return
     * @create: 2019/8/22
     * @author MARK
     * @Description: 创建ShiroFilterFactory
     */
    public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultSecurityManager securityManager){
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();

        //设置安全管理器
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        return shiroFilterFactoryBean;
    }

    /**
     * @return
     * @create: 2019/8/22
     * @author MARK
     * @Description: 创建DefaultWebSecurityManager
     */
    @Bean(name = "securityManager")
    public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        //关联Realm
        securityManager.setRealm(userRealm);
        return securityManager;
    }

    /**
     * @return
     * @create: 2019/8/22
     * @author MARK
     * @Description: 创建Realm 放入spring中
     */
    @Bean(name = "userRealm")
    public UserRealm userRealm(){
        return new UserRealm();
    }
}
  1. 写一个接口测试下环境
package com.mark.springbootshiro.controller;

import com.mark.springbootshiro.common.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: MARK
 * @Date: 2019/8/22 08:23
 * @Version: 1.0.0
 * @Description:
 */
@RestController
@Slf4j
@CrossOrigin
@RequestMapping(value = "/admin", produces = {"application/json;charset=UTF-8"})
public class UserController {

    @GetMapping("/admin")
    public Result getAll(){
        log.info("进来了");
        return Result.ok("成功");
    }
}
  1. 运行结果 整合环境测试

空文件

简介

springboot整合shiro 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/MarkPolaris/springboot-shiro.git
git@gitee.com:MarkPolaris/springboot-shiro.git
MarkPolaris
springboot-shiro
springboot-shiro
master

搜索帮助