Shiro授权

角色授权
SecurityManager调用Subject授权,SercurityManager调用Authorizer的Realm获取用户权限数据
check角色
shiro授权
222222222222222222222
授权过程示意图
Shiro 授权
shiro授权过程(角色有哪些权限)
simpleAccountRealm.addAccount("wakeng","123456","admin","user");
shiro授权:创建securityManager -> 主体授权 -> securityManager授权 -> authorizer授权 -> Realm 获取角色权限数据
添加角色,授权
shiro授权流程
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.SimpleAccount;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.SimpleAccountRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Before;
import org.junit.Test;
/**
* AuthenticationTest
*
* @author Wakeng
*/
public class AuthenticationTest {
SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
@Before
public void addUser(){
simpleAccountRealm.addAccount("wakeng","123456","admin","user");
}
@Test
public void testAuthentication(){
//1.创建SecurityManager
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
defaultSecurityManager.setRealm(simpleAccountRealm);
//2.主题提交认证请求
SecurityUtils.setSecurityManager(defaultSecurityManager);
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("wakeng","123456");
subject.login(token);
System.out.println("login isAuthenticated : "+subject.isAuthenticated());
//判断是否有admin权限
subject.checkRoles("admin","user");
subject.logout();
System.out.println("logout isAuthenticated : "+subject.isAuthenticated());
}
}
shiro授权
shiro赋予admin角色
shiro授权代码
shiro授权流程
Shiro 授权
创建SecurityMananger ->主题授权->SecurityManager授权->Authorizer授权->Realm获取角色权限数据
Shiro授权
与之前Shiro认证的步骤一样。
只不过在Realm 的SimpleAccountRealm中可以添加addUser的时候,可以添加入多个角色(即可变数组的形式)
同样进行授权验证即检验该登录用户是否具备该角色的时候,使用:
subject.checkRoles(可变参数)的形式检验。
必须在登录的情况下,其他步骤与认证相同。
Shiro授权过程
subject.checkRole()检查用户是否具备角色
subject.login()传入token 登陆认证
simpleAccountRelm.addAccount() 授权器 授权
sa 通过 Realm获取角色数据和权限数据
shiro授权
Shiro 授权:
创建SecurityManager -> 主体授权 -> SecurityManager授权 -> Authorizer授权 -> Realm获取角色权限数据
Shiro授权流程
shiro授权流程