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


相关文章
|
12月前
|
Java 数据安全/隐私保护 Spring
SpringSecurity 权限管理的实现
SpringSecurity是一个权限管理框架,核心是认证和授权,前面介绍过了认证的实现和源码分析,本文重点来介绍下权限管理这块的原理。
37 0
|
2月前
|
前端开发 NoSQL 中间件
rbac基于用户角色的权限管理
rbac - 基于角色的权限管理,介绍了acl(访问权限列表)基于用户的权限管理,rbac基于角色的权限管理。
rbac基于用户角色的权限管理
|
存储 缓存 安全
权限管理与Shiro入门-2
权限管理与Shiro入门-2
66 2
|
存储 前端开发 安全
权限管理与Shiro入门-1
权限管理与Shiro入门-1
143 1
|
缓存 安全 Java
【权限管理框架】一文看懂Shiro权限管理框架!1
【权限管理框架】一文看懂Shiro权限管理框架!
|
存储 缓存 算法
【权限管理框架】一文看懂Shiro权限管理框架!2
【权限管理框架】一文看懂Shiro权限管理框架!
|
NoSQL Java Redis
【权限管理框架】一文看懂Shiro权限管理框架!3
【权限管理框架】一文看懂Shiro权限管理框架!
|
安全 NoSQL Java
权限管理-整合 SpringSecurity(2) | 学习笔记
快速学习 权限管理-整合 SpringSecurity(2)
权限管理-整合 SpringSecurity(2) | 学习笔记
|
存储 开发框架 缓存
权限管理-SpringSecurity 介绍 | 学习笔记
快速学习 权限管理-SpringSecurity 介绍
100 0
|
Java 数据安全/隐私保护
【Shiro】1、Shiro实现登录授权认证功能(下)
之前在 SSM 项目中使用过 shiro,发现 shiro 的权限管理做的真不错,但是在 SSM 项目中的配置太繁杂了,于是这次在 SpringBoot 中使用了 shiro,下面一起看看吧
123 0