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


相关文章
|
4月前
|
Kubernetes 安全 数据安全/隐私保护
k8s-权限管理
k8s-权限管理
40 1
|
4月前
|
前端开发 NoSQL 中间件
rbac基于用户角色的权限管理
rbac - 基于角色的权限管理,介绍了acl(访问权限列表)基于用户的权限管理,rbac基于角色的权限管理。
rbac基于用户角色的权限管理
|
存储 缓存 安全
权限管理与Shiro入门-2
权限管理与Shiro入门-2
75 2
|
存储 前端开发 安全
权限管理与Shiro入门-1
权限管理与Shiro入门-1
168 1
|
缓存 安全 Java
【权限管理框架】一文看懂Shiro权限管理框架!1
【权限管理框架】一文看懂Shiro权限管理框架!
|
NoSQL Java Redis
【权限管理框架】一文看懂Shiro权限管理框架!3
【权限管理框架】一文看懂Shiro权限管理框架!
|
存储 缓存 算法
【权限管理框架】一文看懂Shiro权限管理框架!2
【权限管理框架】一文看懂Shiro权限管理框架!
|
安全 NoSQL Java
权限管理-整合 SpringSecurity(2) | 学习笔记
快速学习 权限管理-整合 SpringSecurity(2)
102 0
权限管理-整合 SpringSecurity(2) | 学习笔记
|
存储 开发框架 缓存
权限管理-SpringSecurity 介绍 | 学习笔记
快速学习 权限管理-SpringSecurity 介绍
109 0
|
关系型数据库 MySQL 数据安全/隐私保护
开发指南—权限管理—角色权限管理
本文介绍角色权限管理相关语法级示例。 PolarDB-X兼容原生MySQL 8.0基于橘色的权限控制,请参见基于角色的权限控制。
137 0