Java中间件-Shrio入门

Shiro是一个轻量级的Java安全框架,提供认证、授权、会话管理和加密等功能。它结构清晰,易于集成到JavaSE和JavaEE应用中,也支持分布式环境。本文将介绍Shiro的基本概念、架构以及如何在JavaSE中配置Shiro使用数据库作为数据源。
摘要由CSDN通过智能技术生成

什么是Shiro

Shrio是一个基于Java的开源安全框架,可以完成认证授权、会话管理、加密、缓存等功能。对比Spring security更加简单,更加独立,不仅可以在JavaSE中使用,还可以在JavaEE中使用,也能在分布式集群环境下使用。

Shrio的结构体系

在这里插入图片描述

  • Authentication 认证:验证用户是否合法,也就是登录校验。
  • Authorization 授权:对权限的管理,也就是授予用户权限。
  • Session Management 会话管理:顾名思义。
  • Cryptography 加密:通过加密算法,提供了对用户密码等信息的加密,使加密很便捷。
  • Web Support web应用程序支持:Shiro可以很方便的集成到web应用中。
  • Caching 缓存:Shiro提供了对缓存的支持支持多种缓存架构(如:EHCache,Redis)。
  • Concurrency 并发支持:支持多线程并发访问
  • Testing 测试
  • “Run As” :支持一个用户在允许的前提下使用另一种身份登录。
  • Rememer Me 记住我。

Shiro架构

在这里插入图片描述

  • Subject 主体:是一个Shiro对外提供的接口,将程序传递给Subject接口然后由Shiro管理。subject不仅代表当前用户,与当前应用交互的任何东西都可以是subject。subject需要绑定到security manager,从而转换为与security manager的交互
  • Security Manager 安全管理:即所有subject的管理者,用于实现Shrio的具体功能,是shiro的核心。
  • Pluggable Reamls :数据库交互,权限及角色的信息都在数据库中,而reamls就是shiro与数据库的进行交互的组件

在这里插入图片描述

shiro-JavaSE

要使用Shiro,就先导入Shiro

	<dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-core</artifactId>
      <version>1.4.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
    </dependency>

使用shiro.ini配置文件作为数据源

# 定义用户,用户名=密码,角色
[users]
root = 123456,admin
test = 000000,productManager
# 定义角色
[roles]
# 管理员 什么都可以做
admin = *
# productManager 只可以对产品增删改查
productManager = selectProduct,deleteProduct,updateProduct,addProduct
orderManager = selectOrder,deleteOrder,updateOrder,addOrder
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;

public class ShiroDemo01 {
   
    public static void main(String[] args) {
   
        //将ini配置文件加载进来,当作数据源传递给Sercuity Manager,<>中的SecurityManager是shiro中的
        Factory<SecurityManager> factory =
                new IniSecurityManagerFactory("classpath:shiro.ini");

        //获得SecurityManager对象
        SecurityManager security
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值