shiro 基于角色粗粒度与URL细粒度权限控制实现

shiro 注解方式的权限控制基于代理实现,

  如果写了用了多个注解会按照内定的顺序一个一个验证, 而不是按使用的先后顺序.

  RequiresRoles
  RequiresPermissions
  RequiresAuthentication
  RequiresUser
  RequiresGuest

 

 

  @Bean
  @DependsOn({"lifecycleBeanPostProcessor"})
  public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() {
   DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
   advisorAutoProxyCreator.setProxyTargetClass(true);
   return advisorAutoProxyCreator;
  }

        //权限控制map
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();

     //filterChainDefinitionMap.put("/user/**", "roles[user]");
filterChainDefinitionMap.put("/user/**", "perms[user]");
filterChainDefinitionMap.put("/account/**", "perms[account]");

    
        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
Set<String> set = new HashSet<String>();
     //set.add("users");
     //info.setRoles(set);
set.add("user");
info.setStringPermissions(set);

return info;


 

url基于过滤器实现:

  //自定义过滤器
  Map<String, Filter> filterMap = new LinkedHashMap<>();
  shiroFilterFactoryBean.setFilters(filterMap);

  filterChainDefinitionMap.put("/user/**", "authc");
  filterChainDefinitionMap.put("/**", "authc");
  filterChainDefinitionMap.put("/user/**", "requestURL"); //必须在/**,authc之前添加被控制的路径

    @Autowired
IPermissionService permissionService;

public static URLPathMatchingFilter testUtils;

   // @Autowired 注入失败 使用此方式 @PostConstruct
@PostConstruct
public void init() {
testUtils = this;
}

  
  //保存当前地址并重定向到登录界面  参考张开涛大神的<跟我学shiro>
  HttpServletRequest req = (HttpServletRequest) request;
  HttpServletResponse resp = (HttpServletResponse) response;
  saveRequestAndRedirectToLogin(req, resp);
  return false;


 

 项目源码地址 (问题多多,请不吝赐教)

 








转载于:https://www.cnblogs.com/rempop/p/10880520.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值