StringBoot整合Shiro
来源:互联网 发布:windows镜像下载网站 编辑:程序博客网 时间:2024/06/11 02:36
首先第一步引入
<!--shiro权限控制框架--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.3.2</version> </dependency>
添加配置类
安全管理器(在管理器中添加自己的验证密码和权限的方法)
@Bean public SecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(myShiroRealm()); return securityManager; }
配置拦截链
拦截链的意思,就是给url赋值权限
/** * ShiroFilterFactoryBean 处理拦截资源文件问题。 * 注意:单独一个ShiroFilterFactoryBean配置是或报错的,以为在 * 初始化ShiroFilterFactoryBean的时候需要注入:SecurityManager * * Filter Chain定义说明 1、一个URL可以配置多个Filter,使用逗号分隔 2、当设置多个过滤器时,全部验证通过,才视为通过 * 3、部分过滤器可指定参数,如perms,roles * */ @Bean public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); // 必须设置 SecurityManager shiroFilterFactoryBean.setSecurityManager(securityManager); // 如果不设置默认会自动寻找Web工程根目录下的"admin登录页面"页面 shiroFilterFactoryBean.setLoginUrl("/admin/login"); // 登录成功后要跳转的链接 shiroFilterFactoryBean.setSuccessUrl("/index"); // 未授权界面; shiroFilterFactoryBean.setUnauthorizedUrl("/403"); // 拦截器. Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>(); filterChainDefinitionMap.put("/admin/login", "anon");//登录页面 //TODO 跟登录权限,添加权限test测试。 filterChainDefinitionMap.put("/admin/index", "authc,perms[" +"test" + "]");//校验密码和权限 // 配置退出过滤器,其中的具体的退出代码Shiro已经替我们实现了 filterChainDefinitionMap.put("/logout", "logout"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilterFactoryBean; }
实现Realm
doGetAuthenticationInfo
校验密码
/** * 校验用户名和密码 * * @param authcToken * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException { logger.debug("身份认证方法:MyShiroRealm.doGetAuthenticationInfo()"); UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) authcToken; //TODO 根据用户名和用户密码判断用户,用户验证成功,就把用户名和用户密码放行 String userName = usernamePasswordToken.getUsername(); Admin user = mongoDao.findOneByQuery(Admin.class, "userName", usernamePasswordToken.getUsername()); String pwd = String.valueOf(usernamePasswordToken.getPassword()); if (ObjectUtils.isEmpty(user)){ throw new IncorrectCredentialsException(); } if (StringUtils.endsWithIgnoreCase(user.getPassword(), pwd)) { return new SimpleAuthenticationInfo(userName, pwd, getName()); } return null; }
doGetAuthorizationInfo
在本方法中,查询用户的所有权限,然后添加
/** * 权限链配置 * 在shiro配置类中把资源对应的权限都加载到应用中 * * 在本方法中,查询用户的所有权限,然后添加 * * @param principals * @return */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { logger.debug("##################执行Shiro权限认证##################"); //获取当前登录输入的用户名,等价于 String userName = (String) super.getAvailablePrincipal(principals); logger.debug("##################开始查询用户【" + userName + "】的权限##################"); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); //根据每个用户名获得对应的权限列表 //根据用户名获取用户的权限 info.addStringPermission("test"); return info; }
阅读全文
0 0
- StringBoot整合Shiro
- 【shiro】--- spring整合shiro
- 【shiro】shiro和sping整合
- SpringMVC整合Shiro
- SpringMVC整合Shiro
- SpringMVC整合shiro
- SpringMVC整合Shiro
- SpringMVC整合Shiro
- SpringMVC整合Shiro
- SpringMVC整合Shiro
- SpringMVC整合Shiro
- springmvc整合shiro
- SpringMVC整合Shiro
- spring + Shiro 整合
- SpringMVC整合Shiro
- Springmvc整合shiro
- SpringMVC整合Shiro
- SpringMVC整合Shiro
- linux压缩命令学习小结
- Spring整合Quartz2.1.1(执行中,得到application上下文,执行bean方法)
- Hive(十七)--排序
- CentOS7.2系统下使用node-fontnik将tff字体转pbf字体
- 隐藏UITableView的滚动条以及修改滚动条的颜色
- StringBoot整合Shiro
- 程序员必须掌握的8种排序算法(八):基数排序
- Java锁的种类和区别
- SpringBoot整合Quartz-动态读取任务执行(2.2.1)
- SIM上运营商SPN(Service Provider Name)的读取
- Springboot系列文章
- 熵的通俗理解
- SpringBoot集成Rabbit使用TopicRabbit指定发送集合
- Spring之ioc操作与属性注入