Shiro 框架简单介绍

Shiro 框架简单介绍Shiro 框架简单介绍

大家好,又见面了,我是你们的朋友全栈君。

Shiro介绍

Shiro 是 JAVA 权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。
Shiro 是一个强大而灵活的开源安全框架,能够非常清晰的处理认证授权管理会话以及密码加密
如下是它所具有的特点:

  • 易于理解的 Java Security API;
  • 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
  • 对角色的简单的签权(访问控制),支持细粒度的签权;
  • 支持一级缓存,以提升应用程序的性能;
  • 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;
  • 异构客户端会话访问;
  • 非常简单的加密 API;
  • 不跟任何的框架或者容器捆绑,可以独立运行。

Shiro 主要有四个组件

SecurityManager

典型的 Facade,Shiro 通过它对外提供安全管理的各种服务。

Authenticator

对“Who are you ?”进行核实。通常涉及用户名和密码。
这 个组件负责收集 principals 和 credentials,并将它们提交给应用系统。如果提交的 credentials 跟应用系统中提供的 credentials 吻合,就能够继续访问,否则需要重新提交 principals 和 credentials,或者直接终止访问。

Authorizer

身份份验证通过后,由这个组件对登录人员进行访问控制的筛查,比如“who can do what”, 或者“who can do which actions”。Shiro 采用“基于 Realm”的方法,即用户(又称 Subject)、用户组、角色和 permission 的聚合体。

Session Manager

这个组件保证了异构客户端的访问,配置简单。它是基于 POJO/J2SE 的,不跟任何的客户端或者协议绑定。

shiro的内置过滤器:

Shiro内置的FilterChain
授权过滤器:perms(指定资源需要哪些权限才可以访问),Roles, ssl,rest, port
认证过滤器:anon(不认证也可以访问),authcBasic, authc(必须认证后才可访问),user

FilterName Class
anon org.apache.shiro.web.filter.authc.AnonymousFilter
authc org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authcBasic org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
perms org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter
port org.apache.shiro.web.filter.authz.PortFilter
rest org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter
roles org.apache.shiro.web.filter.authz.RolesAuthorizationFilter
ssl org.apache.shiro.web.filter.authz.SslFilter
user org.apache.shiro.web.filter.authc.UserFilter

shiro各级关联

shiro三大核心模块:Subject(用户)、SecurityManager(框架心脏)、Realm(Shiro与应用安全数据间的“桥梁”)
SecurityManager去管理cacheManager缓存和sessionManager会话,sessionManager再去管理sessionDAO会话DAO 和sessionIdCookie会话ID生成器和sessionValidationScheduler会话验证调度器,cacheManager通过使用Ehcache实现,Realm通过自己自定义或者其他方式的权限存储来实现,比如登录等.

使用统一数据访问层,通过编写实体类,编写Repository接口,最后通过配置文件实现
Repository是标识,spring自动扫描,CrudRepository继承Repository实现curd,PagingAndSortingRepository继承CrudRepository实现分页排序,JpaRepository继承PagingAndSortingRepository实现JPA规范相关的方法,JpaSpecificationExecutor不属于Repository,比较特殊,它去实现一组JPA Criteria查询相关的方法。

  • Realm的作用:
    身份验证(getAuthenticationInfo 方法)验证账户和密码,并返回相关信息
    权限获取(getAuthorizationInfo 方法) 获取指定身份的权限,并返回相关信息
    令牌支持(supports方法)判断该令牌(Token)是否被支持
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106529.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • js判断是否是数字——isNaN()函数

    js判断是否是数字——isNaN()函数isNaN  返回一个Boolean值,指明提供的值是否是保留值NaN(不是数字)。  NaN即NotaNumber  isNaN(numValue)  必选项numvalue参数为要检查是否为NAN的值。  说明  假如值是NaN,那么isNaN函数返回true,否则返回false。使用这个函数的典型情况是检查parseInt

  • html给网页添加背景音乐_网页怎么在属性里加入音乐

    html给网页添加背景音乐_网页怎么在属性里加入音乐方式一:<videocontrols=””autoplay=””name=”media”><sourcesrc=”音乐”type=”audio/mpeg”></video><videocontrols=”true”autoplay=”true”name=”media”loop=”true”hidden=”true”…

  • 如何在mac上安装虚拟机搭载Windows「建议收藏」

    如何在mac上安装虚拟机搭载Windows「建议收藏」一、下载虚拟机官方下载网址https://www.vmware.com/二、下载想要安装的Windows版本推荐下载网址https://msdn.itellyou.cn/(msdn建议收藏,相当全的系统)直接将地址复制到迅雷下载即可三、双击下载完成的vm虚拟机,拖到app中如果VM提示找不到可以连接的有效对等进程:…

  • mysql存储long型数据_int数据类型

    mysql存储long型数据_int数据类型MySQL的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且MySQL允许我们指定数值字段中的值是否有正负之分或者用零填补。表列出了各种数值类型以及它们的允许范围和占用的内存空间。类型大小范围(有符号)…

  • vbs整人代码,表白+提醒 两段代码就OK

    vbs整人代码,表白+提醒 两段代码就OK在沉闷的工作环境下,有时玩玩整人代码也不错,整人代码一般使用VBS脚本来实现,简单的两行代码就可以实现表白+提醒了,不过大家也要警惕VBS脚本的危险性,下面小编分享的只是整人简单脚本,大家可以随便玩!并不损坏电脑文件。 先来第一段弹窗代码:MSGBOX“内容A”+CHR(13)+“内容B”+CHR(13)+“内容C”,1,“标题”将它们复制到文本中,将后缀改成“.VBS”就可以双…

  • 使用Python暴力激活成功教程密码

    使用Python暴力激活成功教程密码由于业务需求,今天项目对接了百度云智能的风控系统,注册和登陆保护,想来测试一下性能,用python写了一个脚本,暴力激活成功教程密码,看看会不会触发风控一、首先在本地新建了一个数据库,保存已经试错过的密码CREATETABLE`test`.`pwd`(`id`int(10)NOTNULLAUTO_INCREMENT,`passwod`varchar(20)CHARACTERSETutf8COLLATEutf8_general_ciNOTNULLDEFAULT’…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号