Shiro - 基础篇(上)

简介: Shiro - 基础篇(上)

image.png

image.png


由于权限管理模块一般都是在资源一层,如果更深一层的话,则可能会与业务代码进行耦合,故提倡Shiro做权限管理,Spring官网也是用Shiro进行的权限管理。

image.png


SUB 主体

Authenticator 认证器(登陆)

Authorizer 授权器(访问权限)

SessionManager Shiro自己的Session不依赖于Web

SessionDAO Session操作增删改查

CacheManager 缓存操作(缓存角色和权限)

Reaims Shiro和数据库直接的一个桥梁


image.png

image.png

AuthenticationTest.java

package com.cheng.test;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.SimpleAccountRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Before;
import org.junit.Test;
public class AuthenticationTest {
    SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
    @Before
    public void addUser() {
        simpleAccountRealm.addAccount("cheng", "123", "admin", "user");
    }
    @Test
    public void testAuthentication() {
        // 1. 构建 SecurityManager 环境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        defaultSecurityManager.setRealm(simpleAccountRealm);
        // 2. 主体提交认证请求
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken("cheng", "123");
        subject.login(token);
        System.out.println("isAuthenticated: " + subject.isAuthenticated());
        // 检查用户是否有 admin 角色
        subject.checkRoles("admin", "user");
        // 退出认证
        subject.logout();
        System.out.println("isAuthenticated: " + subject.isAuthenticated());
    }
}

IniRealm

Shiro的IniRealm 形式:此形式主要是将数据存放到相应的user.ini即文件系统中,通过给定的格式,从文件中查找相应的数据是否存在。


步骤:


删除之前SimpleAccountRealm,在实体中创建IniRealm并实例化。在构造方法中传入相应的user.ini地址。此文件地址一般写为:classpath:user.ini的形式。需要在相应的包中建立resource文件夹,并且放入user.ini文件。

user.ini文件的定义格式为:[users] 用户名=密码,角色 [roles] 角色=权限名(例子:amdin=user:delete,user:update)

与之前认证与授权步骤一样,直接将IniRealm放入到SecurityManager中,进行登录认证,之后进行checkRoles验证与checkPersimmon验证权限等操作即可。

Ps:中括号表示:要同时具备里面的角色才行,是 && 的关系。


目录
相关文章
|
存储 缓存 安全
02 Shiro的架构
02 Shiro的架构
53 0
|
存储 缓存 安全
Shiro学习之Shiro简介
Shiro学习之Shiro简介
106 0
|
存储 数据采集 缓存
Shiro简介
.什么是Shiro - .ApacheShiro 是一个Java的安全(权限)框架。 - .Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。 - .Shiro可以完成,认证,授权,加密,会话管理,Web集成,缓存等。
Shiro简介
|
缓存 安全 Java
Shiro框架学习
Shiro框架学习
183 0
Shiro框架学习
|
存储 缓存 安全
Shiro框架01之什么是shiro+shiro的架构+权限认证
Shiro框架01之什么是shiro+shiro的架构+权限认证
Shiro框架01之什么是shiro+shiro的架构+权限认证
|
SQL 安全 Java
Shiro - 基础篇(下)
Shiro - 基础篇(下)
115 0
Shiro - 基础篇(下)
|
缓存 安全 Java
Shiro(一):shiro简介
Shiro(一):shiro简介
207 0
Shiro(一):shiro简介
|
Java 数据安全/隐私保护 Spring
shiro(三)shiro实战——Spring 集成 Shiro(案例)
shiro(三)shiro实战——Spring 集成 Shiro(案例)
116 0
shiro(三)shiro实战——Spring 集成 Shiro(案例)
|
缓存 Java 网络安全
shiro(三)shiro实战——Spring 集成 Shiro(案例)-1
shiro(三)shiro实战——Spring 集成 Shiro(案例)
130 0
shiro(三)shiro实战——Spring 集成 Shiro(案例)-1
|
存储 安全 Java
shiro简介
shiro是apache提供的强大而灵活的开源安全框架,它主要用来处理身份认证,授权,企业会话管理和加密。 通俗的讲,shiro的身份认证和授权就是拦截用户未登陆或者没有相应权限的越权访问。 Shiro的企业会话管理实际就是session管理,shiro的session管理可以自定义Session存储的方式,保存到内存、文件、数据库都可以,与传统tomcat等容器无关。