- 博客(25)
- 收藏
- 关注
原创 ThreadContext简单介绍
首先看下ThreadContext类的说明:1、shirofilter会为当前线程创建subject 内置ThreadLocal从之前的源码中我们知道了每一次访问都会重新建立subject然后绑定到当前线程,所以这个就很简单了,因为当前线程中获得subject不会是null。只有在没有配置shirofilter的应用中才会出现当前线程中subjec...
2019-09-05 17:00:29
12852
1
原创 Shiro身份认证之密码比较原理
1、在getAuthenticationInfof1、从缓存获取2、获取自定义实现realm中从数据库获取数据后拿到数据后,调用方法密码验证1、获取比较器1、自定义比较器2、默认比较器原理:加密密码获取info密码...
2019-09-04 09:15:06
416
原创 冲突问题1---lifecycleBeanPostProcessor
如果我注释掉shiroEhcacheManager 以下所有bean的创建,项目能启动,当我@Bean(name = "lifecycleBeanPostProcessor")创建这个bean的时候就抛出了上面的异常。这么分析过来问题应该出在这个bean上。LifecycleBeanPostProcessor用于在实现了Initializable接口的Shiro bean初始化时调用Ini...
2019-09-04 09:14:59
2279
1
原创 冲突问题2--shiro的切面注解与springmvc的@controller
public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {DefaultAdvisorAutoProxyCreator creator = new DefaultAdvisorAutoProxyCreator();/** * setUsePrefix(false)用于解决一个奇怪的bu...
2019-09-04 09:14:51
510
原创 冲突问题3---自定义异常与shiro异常
报错注意:1、在自定义realm类中,抛出的异常会被Authenticationexception打包同时会被shiroexception抓住:使用e.getCause获取2、由shiro抛出的错误可以:如果其中一个现有异常类不满足您的需求,AuthenticationExceptions则可以创建自定义以表示特定的故障方案。以下为shiro的自带异常:的异常全是...
2019-09-04 09:14:45
1547
原创 Shiro授权缓存
1、授权和身份验证缓存关键点基本一样不同点:1、RedisCacheManager创建授权和身份验证的名字key不同,但是Rediscache为同类不同对象,保存在currrentmap里面2、保存在redis中的key不同:授权key:keyprifix+principals身份验证key:keyprifix+username...
2019-09-04 09:14:35
755
原创 Shiro之Defaultsecuritymanager方法分析
Defaultsecuritymanager继承了AuthenticationSecuritymanagerlogin()传入的有@controller层传入的tokenlogout:1、清除rememberme2、清除缓存3、清除subject4、清除principalsDelegatingSubject=SecurityUtil.getSubuject...
2019-09-04 09:14:26
1416
原创 Shiro之Authenticatingcache(获取认证缓存原理)
一、创建过程:1、初始化2、判断Authenticatingcache开启缓存,且Authenticatingcache为空原理:cache = getAuthenticationCacheLazy();该方法可以调用cachemanager创建且可以通过名字创建二、调用流程1、authenticatingcache获取缓存核心:2、进入...
2019-09-04 09:14:16
957
原创 Shiro配置踩坑(序列化)
问题一:1、在securitymanager配置 缓存管理类 cacheManager,这个cacheManager必须要在前面执行,因为setRealm 和 setSessionManage2、源于:将对象存入缓存中,皆要将对象序列化问题二: 序列化问题: 1、盐序列化:我们在实现的realm类中,重写dogetAutenticationinfo:...
2019-09-04 09:14:08
1325
原创 Shiro集成Redis解决频繁访
1、频繁访问redis更新session网上解决方法:重写retireveSession,并且储存在request,从里面获取数据该方法减少了接近6倍访问频次问题:2、sessionDao方法:在session.setTimeout(redisManager.getExpire()*1000);保存过redis的session的时间会话时间都会被更新为0,也...
2019-09-04 09:13:25
737
1
原创 Shiro之RedisCaheManager
1、封装了RedisManger为RedisCahe2、一个线程安全的concurrentMap统一管理创建的RedisCache3、定义了String keyPrefix = "shiro_redis_cache:"并且还可以修改核心方法:存在地方:realm中setCaheManager1、创建默认的RedisCache 可以提供参数key...
2019-09-04 09:13:17
273
原创 RedisCahe
1、封装RedisManager:在获取数据或者储存数据皆是从redismanager中的jedispool获取连接并使用方法2、定义了keyProfix=shiro_redis_session的开头保存数据的key +username但是keyprofix一般在RedisCacheManager创建RedisCache时候被覆盖为RedisCacheManag...
2019-09-03 19:55:29
538
原创 RedisManager
RedisManager:1、包含redis的基本配置2、包含了操作redis数据库的方法3、声明静态的JedisPool含有init初始化方法,会判断有无jedispool,并创建
2019-09-03 19:53:29
455
原创 login----在controller层
1、登录成功后,1、获取到info,2、进行rememberme(需要打开)onfiledlogin()入口:3、创建subject6、注意session委派
2019-09-03 19:52:23
945
原创 SessionDao详解
前缀:String keyPrefix=shiro_redis_session与rediscachemanager类似:key:this.keyPrefix + sessionId;id可以自定义value:session原理:包含了redismanager,1、所有操作都是通过jedispool操作的2、并且通过序列化SerializeUtil...
2019-09-03 19:48:15
853
原创 CreateSubject------方法五doCreateSubject
关键参数:principle authenticated host sesion seesionEnabled request response securitymanager
2019-09-03 19:40:03
314
原创 CreateSubject------方法六saveSubject(创建session关键)
开始储存subject1、调用的是DefaultSecurityManager中的SybjectDao:该对象可以自定定义,重复判断有没有session,有没有个人信息,有放入更新session创建sesion的关键:身份信息:currenexistIngPrincipal:当前subject的身份信息existIngPrincipal:sess...
2019-09-03 19:38:16
281
原创 CreateSubject-------方法三resolveSession详解(重要)
方法三:功能:1、查询有没session更新session2、查看sessionid通过cookie存有session对应的id通过遍历所有cookie查询自定义的cookie3、获取默认的resolveSession详解内部有两个session方法1、if中判断方法:通过如下的id类型从容器获取session通过...
2019-09-03 19:31:54
427
原创 Shiro身份验证----subject提交
获取subject对象1、SecurityUtils.getSubject()2、调用的是ThreadContext2、从ThreadContext获取Subject1、其内部有静态创建了ThreadLocal<Map<Object,Object>>2、获取subject的key:org.apache.shiro.util.ThreadCon...
2019-09-03 17:41:34
889
原创 访问之subject--存储
1、绑定到 ThreadContext1、execute1、remove:移除以该线程为key的securitymanager2、在储存removebind更新最后移除shirofilterbean
2019-09-03 17:37:56
350
原创 访问开始之----ShiroFilterFactoryBean
过滤器工厂:ShiroFilterFactoryBean创建的filter含有SecurityManager1、产生的filter,在浏览器访问时候便开始启动就是该过滤器:1、开始调用AbstractFilter中对 方法:2、开始创建subject(subject为线程绑定对象,存入ThreadContext)3、由WebSubject...
2019-09-03 17:36:29
335
原创 mybatis延迟加载(一对多)
什么是延迟加载?resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。需求:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。延迟加载:先从单表查询、需要时再从关联表...
2019-08-02 20:07:46
530
转载 单例模式多种创建考虑
package com.java.oop.instance;/**面试:谈谈你对单例模式的认识?对象单例设计:(设计类时保证类的实例在内存中只有一份)1)内部设计实现(对类自身进行设计)2)外部设计实现(对类的对象提供一种池)*///如何保证如下类的设计在内存中只有一份类的实例?//方案1:class Singleton01{//构造方法私有化,不允许外界直接构建对象pri...
2019-07-26 16:45:10
171
原创 实现一个算法确定字符串中的字符是否均唯一出现(lintcode)
样例样例 1:输入: “abc_____”输出: false样例 2:输入: “abc”输出: true 挑战如果不使用额外的存储空间,你的算法该如何改变?public static void main(String[] args) { System.out.println(new WorkCode3().isUnique("abc_______"));}pu...
2019-05-13 22:15:08
804
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人