简单使用shiro
简单使用shiro
- maven依赖
- 配置文件shiro.ini
- 例子
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
还没有评论,来说两句吧...