Shiro授权

该博客通过一个简单的Java代码示例展示了如何利用Apache Shiro库进行用户登录、授权以及权限检查。在案例中,创建了一个SimpleAccountRealm,设置了用户角色,并在登录后检查用户是否具备特定角色。当尝试检查不具备的角色时,程序会抛出异常。删除不具有的角色检查后,代码能正常运行。此示例突显了Shiro在权限管理中的应用。
摘要由CSDN通过智能技术生成

需要引入的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身份的代码再运行:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值