Shiro角色和权限管理

简介: Shiro角色和权限管理

Shiro角色和权限管理

在resources下创建shiro.ini文件,用于存储数据,也可以将数据存于数据库,这里我采用shiro.ini文件,内容如下:

[users]
zhangsan=z3,role1,role2
lisi=l4
[roles]
role1=user:insert,user:select

代码:

package com.atguigu.shirotest;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
public class ShiroRun {
    public static void main(String[] args) {
        //1初始化获取SecurityManager
        IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        SecurityManager securityManager = factory.getInstance();
        SecurityUtils.setSecurityManager(securityManager);
        //2获取Subject对象
        Subject subject = SecurityUtils.getSubject();
        //3创建token对象,web应用用户名密码从页面传递
        AuthenticationToken token = new UsernamePasswordToken("zhangsan","z3");
//        System.out.println(token);
        //4完成登录
        try {
            subject.login(token);
            System.out.println("登录成功");
            //5判断角色
            boolean hasRole = subject.hasRole("role1");
            System.out.println("是否拥有此角色 = " + hasRole);
            //6判断权限
            boolean permitted = subject.isPermitted("user:insert");
            System.out.println("是否拥有此权限 = " + permitted);
            //也可以用checkPermission方法,但没有返回值,没权限抛AuthenticationException
//            subject.checkPermission("user:select");
        }
        catch (UnknownAccountException e) {
            e.printStackTrace();
            System.out.println("用户不存在");
        }
        catch (IncorrectCredentialsException e) {
            e.printStackTrace();
            System.out.println("密码错误");
        }
        catch (AuthenticationException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

2e06b662d757ef5f99a42826dc9dd2fe_1f7e57b160644808b58432d27331bef0.png


相关文章
|
Java 数据安全/隐私保护 Spring
SpringSecurity 权限管理的实现
SpringSecurity是一个权限管理框架,核心是认证和授权,前面介绍过了认证的实现和源码分析,本文重点来介绍下权限管理这块的原理。
53 0
|
5月前
|
前端开发 NoSQL 中间件
rbac基于用户角色的权限管理
rbac - 基于角色的权限管理,介绍了acl(访问权限列表)基于用户的权限管理,rbac基于角色的权限管理。
rbac基于用户角色的权限管理
|
存储 缓存 安全
权限管理与Shiro入门-2
权限管理与Shiro入门-2
77 2
|
存储 前端开发 安全
权限管理与Shiro入门-1
权限管理与Shiro入门-1
172 1
|
缓存 安全 Java
【权限管理框架】一文看懂Shiro权限管理框架!1
【权限管理框架】一文看懂Shiro权限管理框架!
|
存储 缓存 算法
【权限管理框架】一文看懂Shiro权限管理框架!2
【权限管理框架】一文看懂Shiro权限管理框架!
|
NoSQL Java Redis
【权限管理框架】一文看懂Shiro权限管理框架!3
【权限管理框架】一文看懂Shiro权限管理框架!
|
关系型数据库 MySQL 数据安全/隐私保护
开发指南—权限管理—角色权限管理
本文介绍角色权限管理相关语法级示例。 PolarDB-X兼容原生MySQL 8.0基于橘色的权限控制,请参见基于角色的权限控制。
140 0
|
XML 移动开发 安全
Spring Security实现权限管理(用户、角色、权限)
Spring Security实现权限管理(用户、角色、权限)
638 0
|
数据安全/隐私保护
企业身份管理实战---RAM角色单点登录(SSO)
在上篇文章《企业身份管理--RAM用户SSO(单点登录)实战》中,我们介绍了企业账号到阿里云RAM账号SSO的原理和实战:企业员工在自己的员工系统认证完成后,可以通过SAML协议,按照自定的映射规则,通过浏览器免登到云端控制台。本文将介绍另外一种SSO方式:基于RAM角色的SSO。通过角色扮演的方式,访问云端控制台。
2387 0
企业身份管理实战---RAM角色单点登录(SSO)