<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Entodie的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Entodie</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Entodie]]></copyright><item><title><![CDATA[ThreadContext简单介绍]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526765</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526765</guid><author>Entodie</author><pubDate>Thu, 05 Sep 2019 17:00:29 +0800</pubDate><description><![CDATA[首先看下ThreadContext类的说明：



1、shirofilter会为当前线程创建subject

       内置ThreadLocal



从之前的源码中我们知道了每一次访问都会重新建立subject然后绑定到当前线程，所以这个就很简单了，因为当前线程中获得subject不会是null。只有在没有配置shirofilter的应用中才会出现当前线程中subjec...]]></description><category></category></item><item><title><![CDATA[Shiro身份认证之密码比较原理]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526602</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526602</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:15:06 +0800</pubDate><description><![CDATA[1、在getAuthenticationInfof

1、从缓存获取

2、获取自定义实现realm中从数据库获取数据后



拿到数据后，调用方法密码验证

1、获取比较器

1、自定义比较器

2、默认比较器





原理：

加密密码

获取info密码






...]]></description><category></category></item><item><title><![CDATA[冲突问题1---lifecycleBeanPostProcessor]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526913</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526913</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:14:59 +0800</pubDate><description><![CDATA[如果我注释掉shiroEhcacheManager 以下所有bean的创建，项目能启动，当我@Bean(name = "lifecycleBeanPostProcessor")

创建这个bean的时候就抛出了上面的异常。这么分析过来问题应该出在这个bean上。

LifecycleBeanPostProcessor用于在实现了Initializable接口的Shiro bean初始化时调用Ini...]]></description><category></category></item><item><title><![CDATA[冲突问题2--shiro的切面注解与springmvc的@controller]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526946</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526946</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:14:51 +0800</pubDate><description><![CDATA[public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {

DefaultAdvisorAutoProxyCreator creator = new DefaultAdvisorAutoProxyCreator();

/** * setUsePrefix(false)用于解决一个奇怪的bu...]]></description><category></category></item><item><title><![CDATA[冲突问题3---自定义异常与shiro异常]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526962</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526962</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:14:45 +0800</pubDate><description><![CDATA[报错注意：

1、在自定义realm类中，抛出的异常会被Authenticationexception打包

同时会被shiroexception抓住:

使用e.getCause获取



2、由shiro抛出的错误可以：

如果其中一个现有异常类不满足您的需求，AuthenticationExceptions则可以创建自定义以表示特定的故障方案。

以下为shiro的自带异常：

的异常全是...]]></description><category></category></item><item><title><![CDATA[Shiro授权缓存]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526634</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526634</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:14:35 +0800</pubDate><description><![CDATA[1、授权和身份验证缓存关键点基本一样

不同点：

1、RedisCacheManager

创建授权和身份验证的名字key不同，但是Rediscache为同类不同对象，保存在currrentmap里面

2、保存在redis中的key不同：

授权key：keyprifix+principals

身份验证key：keyprifix+username






...]]></description><category></category></item><item><title><![CDATA[Shiro之Defaultsecuritymanager方法分析]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526736</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526736</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:14:26 +0800</pubDate><description><![CDATA[Defaultsecuritymanager继承了AuthenticationSecuritymanager

login（）传入的有@controller层传入的token

logout:

1、清除rememberme

2、清除缓存

3、清除subject

4、清除principals



DelegatingSubject=SecurityUtil.getSubuject


...]]></description><category></category></item><item><title><![CDATA[Shiro之Authenticatingcache（获取认证缓存原理）]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526565</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526565</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:14:16 +0800</pubDate><description><![CDATA[一、创建过程：

1、初始化



2、判断Authenticatingcache开启缓存，且Authenticatingcache为空



原理：

cache = getAuthenticationCacheLazy();

该方法可以调用cachemanager创建

且可以通过名字创建



二、调用流程



1、authenticatingcache获取缓存



核心：

2、进入...]]></description><category></category></item><item><title><![CDATA[Shiro配置踩坑（序列化）]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100527053</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100527053</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:14:08 +0800</pubDate><description><![CDATA[问题一：

1、在securitymanager配置 缓存管理类 cacheManager，这个cacheManager必须要在前面执行，因为setRealm 和 setSessionManage

2、源于：

将对象存入缓存中，

皆要将对象序列化

问题二：

  序列化问题：

  1、盐序列化：

我们在实现的realm类中，重写dogetAutenticationinfo:
...]]></description><category></category></item><item><title><![CDATA[Shiro集成Redis解决频繁访]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100527200</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100527200</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:13:25 +0800</pubDate><description><![CDATA[1、频繁访问redis更新session



网上解决方法：

重写retireveSession，并且储存在request，从里面获取数据

该方法减少了接近6倍访问频次

问题：

2、sessionDao方法：

在session.setTimeout(redisManager.getExpire()*1000);



保存过redis的session的时间会话时间都会被更新为0，也...]]></description><category></category></item><item><title><![CDATA[Shiro之RedisCaheManager]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100527331</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100527331</guid><author>Entodie</author><pubDate>Wed, 04 Sep 2019 09:13:17 +0800</pubDate><description><![CDATA[1、封装了RedisManger为RedisCahe

2、一个线程安全的concurrentMap

统一管理创建的RedisCache

3、定义了String keyPrefix = "shiro_redis_cache:"

并且还可以修改





核心方法:

存在地方：

realm中setCaheManager

1、创建默认的RedisCache

 可以提供参数key...]]></description><category></category></item><item><title><![CDATA[RedisCahe]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526280</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526280</guid><author>Entodie</author><pubDate>Tue, 03 Sep 2019 19:55:29 +0800</pubDate><description><![CDATA[1、

封装RedisManager:

在获取数据或者储存数据皆是从redismanager中的jedispool获取连接并使用方法

2、

定义了keyProfix=shiro_redis_session的开头

保存数据的key +username

但是keyprofix一般在RedisCacheManager创建RedisCache时候被覆盖为RedisCacheManag...]]></description><category></category></item><item><title><![CDATA[RedisManager]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526235</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526235</guid><author>Entodie</author><pubDate>Tue, 03 Sep 2019 19:53:29 +0800</pubDate><description><![CDATA[RedisManager:



1、包含redis的基本配置

2、包含了操作redis数据库的方法



3、声明静态的JedisPool

含有init初始化方法，会判断有无jedispool，并创建




]]></description><category></category></item><item><title><![CDATA[login----在controller层]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526184</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526184</guid><author>Entodie</author><pubDate>Tue, 03 Sep 2019 19:52:23 +0800</pubDate><description><![CDATA[1、登录成功后，



1、获取到info，

2、进行rememberme（需要打开）onfiledlogin()



入口：







3、创建subject







6、注意



session委派






]]></description><category></category></item><item><title><![CDATA[SessionDao详解]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100526110</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100526110</guid><author>Entodie</author><pubDate>Tue, 03 Sep 2019 19:48:15 +0800</pubDate><description><![CDATA[前缀：

String keyPrefix=shiro_redis_session



与rediscachemanager类似：



key:

this.keyPrefix + sessionId;

id可以自定义

value:

session

原理：

包含了redismanager，

1、所有操作都是通过jedispool操作的

2、并且通过序列化SerializeUtil...]]></description><category></category></item><item><title><![CDATA[CreateSubject------方法五doCreateSubject]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100525946</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100525946</guid><author>Entodie</author><pubDate>Tue, 03 Sep 2019 19:40:03 +0800</pubDate><description><![CDATA[关键参数：

principle
	authenticated
	host
	sesion
	seesionEnabled
	request
	response
	securitymanager



]]></description><category></category></item><item><title><![CDATA[CreateSubject------方法六saveSubject（创建session关键）]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100525907</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100525907</guid><author>Entodie</author><pubDate>Tue, 03 Sep 2019 19:38:16 +0800</pubDate><description><![CDATA[开始储存subject



1、调用的是DefaultSecurityManager

中的SybjectDao：

该对象可以自定定义，



重复判断有没有session，有没有个人信息，有放入更新session



创建sesion的关键：



身份信息：

currenexistIngPrincipal：当前subject的身份信息

existIngPrincipal：sess...]]></description><category></category></item><item><title><![CDATA[CreateSubject-------方法三resolveSession详解(重要)]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100525738</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100525738</guid><author>Entodie</author><pubDate>Tue, 03 Sep 2019 19:31:54 +0800</pubDate><description><![CDATA[方法三：

功能：

1、查询有没session

更新session

2、查看sessionid

通过cookie存有session对应的id

通过遍历所有cookie查询自定义的cookie

3、获取默认的







resolveSession详解



内部有两个session方法







1、if中判断方法：

通过如下的id类型从容器获取session



通过...]]></description><category></category></item><item><title><![CDATA[CreateSubject-------方法三resolvePrincipals]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100524060</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100524060</guid><author>Entodie</author><pubDate>Tue, 03 Sep 2019 17:51:54 +0800</pubDate><description><![CDATA[方法如下：

1、获取当事人们：

从容器中获取






]]></description><category></category></item><item><title><![CDATA[Shiro身份验证----subject提交]]></title><link>https://blog.youkuaiyun.com/Entodie/article/details/100523822</link><guid>https://blog.youkuaiyun.com/Entodie/article/details/100523822</guid><author>Entodie</author><pubDate>Tue, 03 Sep 2019 17:41:34 +0800</pubDate><description><![CDATA[获取subject对象

1、SecurityUtils.getSubject()

2、调用的是ThreadContext



2、从ThreadContext获取Subject

1、其内部有静态创建了ThreadLocal&lt;Map&lt;Object,Object&gt;&gt;

2、获取subject的key：org.apache.shiro.util.ThreadCon...]]></description><category></category></item></channel></rss>