自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 ThreadContext简单介绍

首先看下ThreadContext类的说明:1、shirofilter会为当前线程创建subject 内置ThreadLocal从之前的源码中我们知道了每一次访问都会重新建立subject然后绑定到当前线程,所以这个就很简单了,因为当前线程中获得subject不会是null。只有在没有配置shirofilter的应用中才会出现当前线程中subjec...

2019-09-05 17:00:29 12374 1

原创 Shiro身份认证之密码比较原理

1、在getAuthenticationInfof1、从缓存获取2、获取自定义实现realm中从数据库获取数据后拿到数据后,调用方法密码验证1、获取比较器1、自定义比较器2、默认比较器原理:加密密码获取info密码...

2019-09-04 09:15:06 371

原创 冲突问题1---lifecycleBeanPostProcessor

如果我注释掉shiroEhcacheManager 以下所有bean的创建,项目能启动,当我@Bean(name = "lifecycleBeanPostProcessor")创建这个bean的时候就抛出了上面的异常。这么分析过来问题应该出在这个bean上。LifecycleBeanPostProcessor用于在实现了Initializable接口的Shiro bean初始化时调用Ini...

2019-09-04 09:14:59 2174 1

原创 冲突问题2--shiro的切面注解与springmvc的@controller

public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {DefaultAdvisorAutoProxyCreator creator = new DefaultAdvisorAutoProxyCreator();/** * setUsePrefix(false)用于解决一个奇怪的bu...

2019-09-04 09:14:51 464

原创 冲突问题3---自定义异常与shiro异常

报错注意:1、在自定义realm类中,抛出的异常会被Authenticationexception打包同时会被shiroexception抓住:使用e.getCause获取2、由shiro抛出的错误可以:如果其中一个现有异常类不满足您的需求,AuthenticationExceptions则可以创建自定义以表示特定的故障方案。以下为shiro的自带异常:的异常全是...

2019-09-04 09:14:45 1489

原创 Shiro授权缓存

1、授权和身份验证缓存关键点基本一样不同点:1、RedisCacheManager创建授权和身份验证的名字key不同,但是Rediscache为同类不同对象,保存在currrentmap里面2、保存在redis中的key不同:授权key:keyprifix+principals身份验证key:keyprifix+username...

2019-09-04 09:14:35 668

原创 Shiro之Defaultsecuritymanager方法分析

Defaultsecuritymanager继承了AuthenticationSecuritymanagerlogin()传入的有@controller层传入的tokenlogout:1、清除rememberme2、清除缓存3、清除subject4、清除principalsDelegatingSubject=SecurityUtil.getSubuject...

2019-09-04 09:14:26 1355

原创 Shiro之Authenticatingcache(获取认证缓存原理)

一、创建过程:1、初始化2、判断Authenticatingcache开启缓存,且Authenticatingcache为空原理:cache = getAuthenticationCacheLazy();该方法可以调用cachemanager创建且可以通过名字创建二、调用流程1、authenticatingcache获取缓存核心:2、进入...

2019-09-04 09:14:16 897

原创 Shiro配置踩坑(序列化)

问题一:1、在securitymanager配置 缓存管理类 cacheManager,这个cacheManager必须要在前面执行,因为setRealm 和 setSessionManage2、源于:将对象存入缓存中,皆要将对象序列化问题二: 序列化问题: 1、盐序列化:我们在实现的realm类中,重写dogetAutenticationinfo:...

2019-09-04 09:14:08 1255

原创 Shiro集成Redis解决频繁访

1、频繁访问redis更新session网上解决方法:重写retireveSession,并且储存在request,从里面获取数据该方法减少了接近6倍访问频次问题:2、sessionDao方法:在session.setTimeout(redisManager.getExpire()*1000);保存过redis的session的时间会话时间都会被更新为0,也...

2019-09-04 09:13:25 663 1

原创 Shiro之RedisCaheManager

1、封装了RedisManger为RedisCahe2、一个线程安全的concurrentMap统一管理创建的RedisCache3、定义了String keyPrefix = "shiro_redis_cache:"并且还可以修改核心方法:存在地方:realm中setCaheManager1、创建默认的RedisCache 可以提供参数key...

2019-09-04 09:13:17 234

原创 RedisCahe

1、封装RedisManager:在获取数据或者储存数据皆是从redismanager中的jedispool获取连接并使用方法2、定义了keyProfix=shiro_redis_session的开头保存数据的key +username但是keyprofix一般在RedisCacheManager创建RedisCache时候被覆盖为RedisCacheManag...

2019-09-03 19:55:29 511

原创 RedisManager

RedisManager:1、包含redis的基本配置2、包含了操作redis数据库的方法3、声明静态的JedisPool含有init初始化方法,会判断有无jedispool,并创建

2019-09-03 19:53:29 411

原创 login----在controller层

1、登录成功后,1、获取到info,2、进行rememberme(需要打开)onfiledlogin()入口:3、创建subject6、注意session委派

2019-09-03 19:52:23 867

原创 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 798

原创 CreateSubject------方法五doCreateSubject

关键参数:principle authenticated host sesion seesionEnabled request response securitymanager

2019-09-03 19:40:03 278

原创 CreateSubject------方法六saveSubject(创建session关键)

开始储存subject1、调用的是DefaultSecurityManager中的SybjectDao:该对象可以自定定义,重复判断有没有session,有没有个人信息,有放入更新session创建sesion的关键:身份信息:currenexistIngPrincipal:当前subject的身份信息existIngPrincipal:sess...

2019-09-03 19:38:16 249

原创 CreateSubject-------方法三resolveSession详解(重要)

方法三:功能:1、查询有没session更新session2、查看sessionid通过cookie存有session对应的id通过遍历所有cookie查询自定义的cookie3、获取默认的resolveSession详解内部有两个session方法1、if中判断方法:通过如下的id类型从容器获取session通过...

2019-09-03 19:31:54 375

原创 CreateSubject-------方法三resolvePrincipals

方法如下:1、获取当事人们:从容器中获取

2019-09-03 17:51:54 199

原创 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 824

原创 访问之subject--存储

1、绑定到 ThreadContext1、execute1、remove:移除以该线程为key的securitymanager2、在储存removebind更新最后移除shirofilterbean

2019-09-03 17:37:56 313

原创 访问开始之----ShiroFilterFactoryBean

过滤器工厂:ShiroFilterFactoryBean创建的filter含有SecurityManager1、产生的filter,在浏览器访问时候便开始启动就是该过滤器:1、开始调用AbstractFilter中对 方法:2、开始创建subject(subject为线程绑定对象,存入ThreadContext)3、由WebSubject...

2019-09-03 17:36:29 297

原创 mybatis延迟加载(一对多)

什么是延迟加载?resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。需求:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。延迟加载:先从单表查询、需要时再从关联表...

2019-08-02 20:07:46 480

转载 单例模式多种创建考虑

package com.java.oop.instance;/**面试:谈谈你对单例模式的认识?对象单例设计:(设计类时保证类的实例在内存中只有一份)1)内部设计实现(对类自身进行设计)2)外部设计实现(对类的对象提供一种池)*///如何保证如下类的设计在内存中只有一份类的实例?//方案1:class Singleton01{//构造方法私有化,不允许外界直接构建对象pri...

2019-07-26 16:45:10 145

原创 实现一个算法确定字符串中的字符是否均唯一出现(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 738 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除