• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SpringBoot Shiro授权实现过程解析

springboot 搞代码 4年前 (2022-01-05) 21次浏览 已收录 0个评论

这篇文章主要介绍了SpringBoot Shiro授权实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了SpringBoot Shiro授权实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

使用Shiro过滤器实现授权

设置好授权拦截跳转的请求地址

 /** * 创建ShiroFilterFactoryBean */ @Bean public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean=new ShiroFilterFactoryBean(); //设置安全管理器 shiroFilterFactoryBean.setSecurityManager(securityManager); //添加Shiro内置过滤器 /** * Shiro内置过滤器,可以实现权限相关的拦截器 * 常用的过滤器: *   anon:无需认证(登录)可以访问 *   authc:必须认证才可以访问 * user:如果使用rememberMe的功能可以直接访问 * perms:该资源必须得到资源权限才可以访问 * role:该资源必须得到角色权限才可以访问 */ Map filterMap= new LinkedHashMap(); //设置拦截后跳转的请求路径 shiroFilterFactoryBean.setLoginUrl("/user/badRequest"); //设置未授权提示的页面 shiroFilterFactoryBean.setUnauthorizedUrl("/user/badRequest"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap); return shiroFilterFactoryBean; }

再使用 filterMap 去放对应的拦截即可,例如 filterMap.put(“/**”, “anon”)

上面是认证的,如果需要授权的,相应的多给一个任意的授权字符串如 filterMap.put(“/user/add”, “perms[user:add]”)

授权逻辑编写的位置

 /** * 执行授权逻辑 */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) { System.out.println("开始执行Shiro的授权方法..."); //给资源进行授权 SimpleAuthorizationInfo info= new SimpleAuthorizationInfo(); //添加资源的授权字符串 info.addStringPermission("user:add"); return null; }

授权字符串和之前的字符串对应

补充

 /** * 执行认证逻辑 */ @Override protected AuthenticationInfo doGetAuthenticationIn<a style="color:transparent">来源gao*daima.com搞@代#码网</a>fo(AuthenticationToken arg0) throws AuthenticationException { System.out.println("开始执行Shiro的认证方法..."); //编写Shiro判断逻辑,判断用户名和密码 //判断用户名是否存在 UsernamePasswordToken token=(UsernamePasswordToken)arg0; User user = userMapper.findByUsername(token.getUsername()); if(user==null) return null; //判断密码是否正确,参数一为认证的实体 return new SimpleAuthenticationInfo(user,user.getPassword(),""); }

在执行认证时的SimpleAuthenticationInfo第一个传参可以用来获取当前用户

 /** * 执行授权逻辑 */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) { System.out.println("开始执行Shiro的授权方法..."); //给资源进行授权 SimpleAuthorizationInfo info= new SimpleAuthorizationInfo(); //添加资源的授权字符串 info.addStringPermission("user:register"); //获取当前的登录用户 User user=(User)SecurityUtils.getSubject().getPrincipal(); return null; }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是SpringBoot Shiro授权实现过程解析的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SpringBoot Shiro授权实现过程解析

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址