SpringBoot+Shiro+Jwt实现根据链接中参数进行权限控制
序号:03
业务需求
实现一个论坛系统,根据用户组,来区分用户可访问的模块,用户访问无权限访问的文章时,给出相应提示。
实现思路
Shiro是通过在AuthorizingRealm中获取当前用户权限(这里为可访问文章类型id),保存在SimpleAuthorizationInfo中,然后通过subject.isPermitted(文章类型id)来判断是否有权限访问;
所以可以在doGetAuthorizationInfo中根据token获取到用户信息,从数据库中联合查询到可以访问的文章类型id,添加到用户权限中,isAccessAllowed中获取用户访问链接中的参数,调用 subject.isPermitted(id),判断是否拥有该权限。
注意点:
subject.isPermitted(id)调用前一定要先调用subject.login(token);方法,不然在isPermitted时不会进行授权
重点代码
自定义过滤器,重写isAccessAllowed方法。
1 | public class JWTFilter extends AuthorizationFilter { |
自定义realm,重写doGetAuthorizationInfo方法。
授权代码:
1 | public class CustomRealm extends AuthorizingRealm{ |
全部代码
pom.xml
1 | <!--aop--> |
CustomRealm.java
1 | package com.zyc.shiro; |
JWTFilter.java
1 | package com.zyc.shiro; |
JWTToken.java
1 | package com.zyc.shiro; |
ShiroConfigurer.java
1 | package com.zyc; |
SpringBoot+Shiro+Jwt实现根据链接中参数进行权限控制