Shiro授权的步骤
1.创建SecurityManager->主体授权->SecurityManager授权->Authorizer授权->Realm获取角色权限数据。
SimpleRealm没有权限,只能规定角色。
下面看代码
public class AuthenticateTest {
//先使用简单的Realm来验证
private SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
@Before
public void addUser(){
simpleAccountRealm.addAccount("mark","123456","admin","user"); //Realm可以添加多个账户
//现在只是入门,使用的是简单的Realm,之后会有更符合业务逻辑的Realm出现
simpleAccountRealm.addAccount("wangye","123456","user");
}
@Test
public void authorticateTest(){
//1. 构建SecurityManager环境
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
defaultSecurityManager.setRealm(simpleAccountRealm); //因为最终式使用Realm来验证,所以要设置Realm
//2. 主体提交认证
SecurityUtils.setSecurityManager(defaultSecurityManager);//先设置认证环境
Subject subject = SecurityUtils.getSubject();
//家下来就是登陆了,如果传入的用户名不正确,和Realm中的不匹配,那么久会异常
UsernamePasswordToken token = new UsernamePasswordToken("wangye","123456");
subject.login(token);
System.out.println("是否登陆成功:"+ subject.isAuthenticated());//true
//登陆就有登出
//subject.logout();
System.out.println("是否验证成功:"+ subject.isAuthenticated());//false
//检查用户角色
subject.checkRoles("user");
System.out.println(subject.hasRole("user"));//true
}
}
注意我们使用的是hasRoles,而不是使用checkRoles.