简单使用shiro
maven依赖
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.4.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.21</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency>
配置文件shiro.ini
[users] # user 'root' with password 'secret' and the 'admin' role root = secret, admin guest = guest, guest testUser01 = 123456, testRole02, testRole04 testUser02 = 123456, testRole01, testRole02 testUser03 = 12345, testRole03 [roles] admin = * testRole01 = winnebago:drive:eagle5 testRole02 = lightsaber:*
- users:用户列表
root 是用户账号,secret是密码,admin是角色 - roles:角色列表
给各个角色授权,* 星号表示授权所有权限
例子
//读取配置文件 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); SecurityManager securityManager = factory.getInstance(); //shiro环境设置 SecurityUtils.setSecurityManager(securityManager); //获取当前登录用户 Subject currentUser = SecurityUtils.getSubject(); //通过用户获取session Session session = currentUser.getSession(); session.setAttribute("key01", "value01"); String value = (String) session.getAttribute("key01"); log.info("[key01," + value + "]"); //判断用户是否已经认证(是否登录) if (!currentUser.isAuthenticated()) { UsernamePasswordToken token = new UsernamePasswordToken("testUser02", "123456"); token.setRememberMe(true); try { currentUser.login(token); } catch (UnknownAccountException uae) { log.info("用户账号不存在: " + token.getPrincipal()); } catch (IncorrectCredentialsException ice) { log.info("用户账号的密码出错: " + token.getPrincipal()); } catch (LockedAccountException lae) { log.info("用户账号被锁了: " + token.getPrincipal()); } catch (AuthenticationException ae) { log.info("认证出错: " + token.getPrincipal()); } } log.info("账号认证成功 [" + currentUser.getPrincipal() + "]"); //测试角色 if (currentUser.hasRole("testRole02")) { log.info("当前用户拥有角色 testRole02"); } else { log.info("对不起,当前用户没有角色 testRole02"); } //测试权限 if (currentUser.isPermitted("lightsaber:wield")) { log.info("当前用户拥有权限: lightsaber:wield"); } else { log.info("对不起,当前用户拥有权限: lightsaber:wield"); } //测试权限 if (currentUser.isPermitted("winnebago:drive:eagle5")) { log.info("当前用户拥有权限: winnebago:drive:eagle5"); } else { log.info("对不起,当前用户拥有权限: winnebago:drive:eagle5"); } //登出 currentUser.logout(); System.exit(0);
打印信息
2019-05-05 12:02:47,671 INFO [Quickstart] - [key01,value01] 2019-05-05 12:02:47,672 INFO [Quickstart] - 账号认证成功 [testUser02] 2019-05-05 12:02:47,672 INFO [Quickstart] - 当前用户拥有角色 testRole02 2019-05-05 12:02:47,673 INFO [Quickstart] - 当前用户拥有权限: lightsaber:wield 2019-05-05 12:02:47,673 INFO [Quickstart] - 当前用户拥有权限: winnebago:drive:eagle5
文章来源: https://blog.csdn.net/qq_26264237/article/details/89842606