![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Shiro
苍穹尘
文能提笔安天下,武能上"码"定乾坤。
展开
-
Shiro系列三:集成Spring
1、引入shiro的依赖。shiro-all包括shiro所有的jar包,如:核心包shiro-core,与web整合的shiro-web、与spring整合的shiro-spring、与任务调度quartz整合的shiro-quartz等。<dependency> <groupId>org.apache.shiro</groupId> <a...原创 2019-06-06 20:54:59 · 365 阅读 · 0 评论 -
Shiro系列一:简介
Apache Shiro 是 Java 的一个安全(权限)框架。 Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。Shiro 可以完成:认证、授权、加密、会话管理、与Web 集成、缓存等。Shiro不会去维护用户、维护权限;这些需要我们自己去设计和提供;然后通过相应的接口注入给Shiro即可。官网下载:http://shiro....原创 2019-06-04 19:52:46 · 410 阅读 · 0 评论 -
Shiro系列十五:Rememberme
Shiro 提供了记住我(RememberMe)的功能,比如访问如淘宝等一些网站时,关闭了浏览器,下次再打开时还是能记住你是谁, 下次访问时无需再登录即可访问,基本流程如下: 1、首先在登录页面选中 RememberMe 然后登录成功;如果是浏览器登录,一般会把 RememberMe 的Cookie 写到客户端并保存下来; 2、关闭浏览器再重新打开;会发现浏览器还是记住你的; 3、访问一般...原创 2019-06-07 20:08:22 · 507 阅读 · 0 评论 -
Shiro系列十四:缓存
1、CacheManagerAware 接口 Shiro 内部相应的组件(DefaultSecurityManager)会自动检测相应的对象(如Realm)是否实现了 CacheManagerAware 并自动注入相应的 CacheManager。2、Realm 缓存 Shiro 提供了 CachingRealm,其实现了 CacheManagerAware 接口,提供了缓存的一些基础实现;...原创 2019-06-07 19:49:20 · 261 阅读 · 0 评论 -
Shiro系列十三:会话管理
Shiro 提供了完整的企业级会话管理功能,不依赖于底层容 器(如web容器tomcat),不管 JavaSE 还是 JavaEE 环境都可以使用,提供了会话管理、会话事件监听、会话存储和持久化、容器无关的集群、失效和过期支持、对Web 的透明支持、SSO 单点登录的支持等特性。一、会话的API Subject.getSession():即可获取会话;其等价于 Subject.getSess...原创 2019-06-07 19:32:40 · 591 阅读 · 0 评论 -
Shiro系列十二:权限注解
@RequiresAuthentication:表示当前Subject已经通过login 进行了身份验证;即 Subject. isAuthenticated() 返回 true。 @RequiresUser:表示当前 Subject 已经身份验证或者通过记住我登录的。 @RequiresGuest:表示当前Subject没有身份验证或通过记住我登录过,即是游客身份。 @RequiresR...原创 2019-06-07 18:13:39 · 1364 阅读 · 0 评论 -
Shiro系列十一:权限标签
Shiro 提供了 JSTL 标签用于在 JSP 页面进行权限控制,如根据登录用户显示相应的页面按钮。 需要在JSP 中导入 shiro 的标签库:<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>一、常用标签guest 标签:用户没有身份验证时显示相应信息,即游客访问信息。user 标签:用户已经经...原创 2019-06-07 17:43:27 · 2570 阅读 · 1 评论 -
Shiro系列十:授权源码解析
一、授权流程 1、首先调用 Subject.isPermitted或hasRole 接口,其会委托给 SecurityManager,而 SecurityManager 接着会委托给 Authorizer; 2、Authorizer是真正的授权者,如果调用如 isPermitted(“user:view”),其首先会通过 PermissionResolver 把字符串转换成相应的 Per...原创 2019-06-07 17:20:27 · 1157 阅读 · 0 评论 -
Shiro系列九:拦截器
一、简介 Shiro 内置了很多默认的拦截器,比如身份验证、授权等 相关的。默认拦截器可以参考 org.apache.shiro.web.filter.mgt.DefaultFilter中的枚举拦截器:1、身份验证相关的拦截器2、授权相关的拦截器3、其他拦截器二、权限配置(即拦截器的使用) 在Spring配置文件的 shiroFilter 中配置权限<bean id="...原创 2019-06-07 14:32:08 · 954 阅读 · 0 评论 -
Shiro系列八:授权
授权,也叫访问控制,即在应用中控制谁访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource)、权限 (Permission)、角色(Role)。 主体(Subject):访问应用的用户,在 Shiro 中使用 Subject 代表该用户。用户只有授权 后才允许访问相应的资源。 资源(Resource):在应用中用户可...原创 2019-06-07 14:08:28 · 166 阅读 · 0 评论 -
Shiro系列七:Realm
Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色和权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。如我们之前的ini配置方式将使用org.apache.shiro.realm...原创 2019-06-07 13:26:54 · 1728 阅读 · 0 评论 -
Shiro系列六:认证源码解析
1、SecurityManager对象的生成。SecurityManager对象是在监听器里面生成的。2、根据我们的shiroEnvironmentClass变量的值org.apache.shiro.web.env.IniWebEnvironment,初始化一个shiro环境对象。3、创建一个SecurityManager对象,并将其绑定到刚才通过字节码创建的Shiro环境对象中。4、查...原创 2019-06-07 12:33:02 · 238 阅读 · 0 评论 -
Shiro系列五:MD5盐值加密
对于同一密码,同一加密算法会产生相同的hash值,这样,当用户进行身份验证时,也可对用户输入的明文密码应用相同的hash加密算法,得出一个hash值,然后使用该hash值和之前存储好的密文值进行对照,如果两个值相同,则密码认证成功,否则密码认证失败。 但是这样存在很大的问题,不同的用户极有可能会使用相同的密码,那么这些用户对应的密文也会相同,这样,当存储用户密码的数据库泄露后,攻击者会很容易便...原创 2019-06-07 11:41:10 · 1085 阅读 · 0 评论 -
Shiro系列四:认证流程
一、简介 身份验证,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名和密码来证明。在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身份。最常见的principals和credentials组合就是用户名和密码了。 principals:身份,即主体的标识属性,可...原创 2019-06-06 22:13:07 · 271 阅读 · 0 评论 -
Shiro系列二:入门
1、shiro.ini配置文件## Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agreements. See the NOTICE file# distributed with this work for additional information# ...原创 2019-06-04 20:05:54 · 275 阅读 · 0 评论