SpringBoot整合Shiro编程步骤
第一步:在controller层登录
在controller层登录,传入username与password
用SecurityUtils类的getSubject方法获取一个新建的Subject
把name与password封装成一个token
用subject.login(token)执行登录方法,如果有异常会catch住
第二步:在realm里面授权和认证
新建UserRealm类继承AuthorizngRealm,自动实现授权和认证两个方法:
授权代码实现
先把用户信息用securityUtils.getSubject方法取出来放在subject里面,
然后用取出来的subject.getPrincipal方法获得这个类的主体也就是user,
用userService里面的findByID或者FindByName方法获取这个数据库里的dbuser
把这个数据库里的dbuser获取到的权限permission ,用addPermission方法set到simpleAuthorizationInfo当中并且返回,返回AuthorizationInfo类授权方法完成
证方法实现
新建一个SimpleAuthenticINfo 类
用传入参数强转成UserNamePasswordToken对象
用userService在数据库中查询传入参数的用户,没有返回null
最后返回新建的SimpleAuthenticInfo,方法里传入参数(第一个可以是username,也可以直接是user,第二个参数为password,后面的参数为盐值)
第三步:在ShiroConfig里配置
新建ShiroConfig类,用@Configration类注解
在类里面建三个方法:
第一个方法是创建realm
返回一个上一步建的UserRealm对象
第二个方法是创建安全管理器
新建DefaltWebSecurityManager,把上一个的realm设置到里面,返回securityManager
第三个方法是最重要的创建shiroFilterFactoryBean方法
这个方法的作用是设置权限过滤器
新建一个ShiroFilterFactoryBean,把上一步的securityManager设置到里面
建LinkedHashMap类,把权限设置到map里面,在设置一些默认跳转页面,最后把map设置到类里面
具体案例请参看下面博客:具体案例