需要引入的jar包和Shiro实现登录功能一样,代码的调用过程也基本一样,就是多了一个授权与检查权限。
/**
* 授权与登录认证过程的演示案例
*
* @param args
*/
public static void main(String[] args) {
String username = "hello";
String password = "123456";
String superAdminRole = "superAdminRole";
String adminRole = "admin";
String memberRole = "member";
//模拟一个用户,并设置他的角色为admin和memberRole(可以设置多个角色)
SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
simpleAccountRealm.addAccount(username, password, adminRole, memberRole);
//1:构建securityManager环境
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
defaultSecurityManager.setRealm(simpleAccountRealm);
//2:主体提交认证请求
SecurityUtils.setSecurityManager(defaultSecurityManager);
Subject subject = SecurityUtils.getSubject();
//3:登录(Shiro接管了登录功能),如果传入的账号密码和simpleAccountRealm对象的不同则会账号或密码错误的异常
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
subject.login(token);
//3:检查当前用户是不是memberRole和adminRole
subject.checkRoles(memberRole, adminRole);
subject.checkRole(superAdminRole);//检查当前用户是不是superAdminRole
//查看认证结果
System.out.println("认证结果:" + subject.isAuthenticated());
}
当前用户并不具备superAdminRole身份,所以运行会抛出异常:
删除掉代码中检查superAdminRole身份的代码再运行: