简单使用shiro

匿名 (未验证) 提交于 2019-12-02 23:32:01

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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!