Shiro权限框架

Shiro 权限框架

1.简介

    Apache Shiro是Java的一个安全框架。目前,使用Shiro的人越来越多,因为它相当简单,对比SPring Security,可能没有SPring Security做的功能强大,但是在很多项目的实际开发中可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。
    Shiro可以非常容易的开发出足够好的应用 ,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存邓,是一个比较完备的安全框架,而且Shiro的API也非常简单。其简单功能点如下图所示:
在这里插入图片描述

2.术语和Shiro概念模型

    关与软件的安全,首先有如下几个概念需要理解和区分:
    Authentication:认证/登陆,检查用户是否有相应的身份。
    Authorization:授权 ,既权限验证,验证某个以认证的用户是否拥有某个权限,判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限。
    Session Manager:会话管理,既用户登陆后就是一次会话,在没有推出之前,它的所有信息都在会话中;会话可以是普通javaSE环境的,也可以是如Web环境的。
    从应用程序的角度来看,Shiro框架的工作方式为:
在这里插入图片描述
    可以看到:应用代码直接交互的对象Subject,也就是Shiro框架的对外API核心就是Subject。其每个API的含义:
    Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;既一个抽象概念;所有Subject都绑定到SecurityManager
,与Subject的所有交互都会委托给SecurityManager;可以把Subject以为是是一个门面;SSecurityManager才是实际的执行者;
    SecurityManager:安全管理器;既所有与安全有关的操作都会与SecurityManager交互;而且它管理着所有Subject;可以看出它是Shiro的核心,它负责与后边介绍的其他醉驾案进行交互,如果学习过SpringMVC,你可以把它看成DispatcherServlet前端控制器;
    Realm:域,Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户数据进行比较以确认用户是否能进行操作。因此,可以通俗地把Realm看成DataSource既安全数据源。Realm的实现方式可以有很多种,比如JDBC、ini文件、LDAP或者内存实现。
    归纳起来,对于我们而言,最简单的一个Shiro应用,上述几个对象的分工大概是:应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;开发者需要给Shiro的SecurityManager注入Realm,从而让SecurityManager得到合法的用户及其权限进行判断。从以上也可以出,Shiro不提供维护用户/权限,而是通过Realm让开发者自己注入。
    除上述几个概念,Shiro还有几个重要的对象需要了解。
    Authenticator:认证器,负责主体认证的,这是一个扩展点,如果用户觉得Shiro默认的不好,可以自定义实现;其需要认证策略(Authentication Strategy),既什么情况下算用户认证通过了。
    Authrizer:授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;既控制着用户能访问应用中的哪些功能。
    CacheManager:缓存控制器 ,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存后可以提高访问的性能。
    **Cryptography:**密码模块,Shiro提供了一些常见的加密组件应用于如密码加密/解密。

3.Shiro的实操

3.1整体架构

在这里插入图片描述

3.2SpringBoot和thymeleaf模板技术引入Shiro核心依赖

在这里插入图片描述

3.3Spring框架融合Shiro安全框架用的全部jar包

在这里插入图片描述

3.4在Pojo包中创建Uesr实体对象与数据库一致

Pojo包中的实体对象
在这里插入图片描述
数据库中的表结构
在这里插入图片描述

3.5Dao与Service类

Dao
在这里插入图片描述
Service
在这里插入图片描述

3.6Controller控制器类

登录LoginController
在这里插入图片描述

3.7自定义Realm(域)

在这里插入图片描述

3.8自定义Config

在这里插入图片描述

3.9HTML页面

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值