shiro
coding的大博哥
做一个牛逼的人,不问世事……
展开
-
对Shiro的RememberMe的理解
1:设置cookie的存活时间2:shiro把认证成功的principal序列化到cookie中,然后发送到浏览器端。以往是将session的id存放到cookie中,浏览器再次访问时,带着cookie中的sessionid来服务器中找session。3:打开浏览器再次访问系统时,带着cookie中序列化的principal来访问系统。4:所以shiro的RememberMe和sess...原创 2019-10-23 17:44:26 · 469 阅读 · 0 评论 -
对shiro的session的理解
以问答的形式1:session的作用是什么?和web容器中的session作用一样,就是用于记录浏览器和服务器之间的交互2:登录状态和session有没有关系?登录认证成功之后,shiro是将认证信息存储在session中的,以后的每次请求肯定会在过滤器中判断session中有没有认证信息,以作为放行的依据。3:为什么要把session持久化,即为sessionDao?是为了分...原创 2019-10-23 16:12:29 · 2410 阅读 · 0 评论 -
对shiro缓存的理解
一:缓存的流程1:缓存的作用:用于缓存认证信息和授权信息,不用每次都去数据库里查询数据,而是从缓存中获取。2:shiro的本质工作是认证和授权,缓存的工作shiro没有做,而是预留了接口cache,cache中有对要缓存数据的操作方法,让开发者去做不同的实现。3:我们可以对cache接口进行redis,memcache或者ehcache的实现。4:CacheManager接口也是s...原创 2019-10-21 14:31:08 · 1100 阅读 · 0 评论 -
项目中对shiro的应用
1:项目中,用户-角色-权限的关系如下图:2:用户登录时,可以借用shiro的认证,仅仅需要userInfo的信息就可以完成认证。3:用户登录成功之后,达到系统主页面时,有以下信息会根据用户角色和权限的不同,显示的不同:(1):菜单(2):页面上的元素(按钮之类的)(3):通过浏览器访问一个当前用户没有被分配权限的资源4:菜单:开发者可以通过登录用户获取到被分配的菜单(...原创 2019-10-14 17:30:41 · 249 阅读 · 0 评论 -
shiro的授权过程
1:通过继承shiro的AuthorizingRealm类,并实现它的doGetAuthorizationInfo方法来进行授权。2:doGetAuthorizationInfo方法的参数是认证通过的principal的集合(因为可多个realm,且有不同的认证策略)3:doGetAuthorizationInfo方法的作用就是:登录认证成功之后,根据认证通过的principal,...原创 2019-10-14 16:44:04 · 913 阅读 · 0 评论 -
shiro的认证流程中各个类之间的关系
1:SecurityManager有个默认的认证器:ModularRealmAuthenticator,但是我们可以给SecurityManager设置其他的认证器。2:认证器ModularRealmAuthenticator有个默认的认证策略:AtLeastOneSuccessfulStrategy,但是我们可以给ModularRealmAuthenticator设置其他认证策略。3...原创 2019-10-12 17:09:17 · 250 阅读 · 0 评论 -
对shiro的AuthenticationStrategy的理解
AuthenticationStrategy:认证策略,当给认证器Authenticator设置多个Realm时,要用到认证策略;认证策略的大致意思是:将多个realm返回的结果,按照什么样的认证策略来形成最终的认证结果。1:AuthenticationStrategy的继承和实现关系如下AuthenticationStrategy接口有个抽象类的实现AbstractAuthentic...原创 2019-10-12 15:33:15 · 593 阅读 · 0 评论 -
SimpleCredentialsMatcher和HashedCredentialsMatcher的区别
如果不知道shiro的认证过程,可以先看这篇文章:https://blog.csdn.net/ITWANGBOIT/article/details/1025004921:它们都是CredentialsMatcher的实现类,而且HashedCredentialsMatcher还是SimpleCredentialsMatcher的子类2:SimpleCredentialsMatcher进...原创 2019-10-11 16:20:31 · 2453 阅读 · 0 评论 -
给AuthenticatingRealm设置CredentialsMatcher
1:通过查看AuthenticatingRealm的构造方法,看到第一,二个构造函数中没有传入CredentialsMatcher,则AuthenticatingRealm自己创建了SimpleCredentialsMatcher。即默认情况下AuthenticatingRealm的CredentialsMatcher 是SimpleCredentialsMatcher。2:无论开发者调用...原创 2019-10-11 15:40:55 · 1862 阅读 · 1 评论 -
shiro的认证过程
下图为调用subject.login()方法进行登录认证时的方法调用过程。大致过程为:1:当调用subject.login方法时,实际上调用的是SecurityManager的login方法。2:SecurityManager里有个Authenticator(即认证器),SecurityManager会将认证动作交给认证器,认证器可以设置认证策略(这里不说)。3:Securit...原创 2019-10-11 14:58:48 · 2503 阅读 · 1 评论 -
shiro认证时Realm的写法
第一种情况:1:实现shiro的认证可以继承AuthenticatingRealm,并重写它的doGetAuthenticationInfo方法。2:AuthenticatingRealm类的doGetAuthenticationInfo方法返回一个SimpleAuthenticationInfo对象,该对象里封装了要比对的凭证(即密码),然后把返回的SimpleAuthenticat...原创 2019-10-11 12:56:12 · 316 阅读 · 0 评论