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页面

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值