自定义博客皮肤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 13023 1

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

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

2019-09-04 09:15:06 444

原创 冲突问题1---lifecycleBeanPostProcessor

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

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

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

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

2019-09-04 09:14:51 547

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

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

2019-09-04 09:14:45 1594

原创 Shiro授权缓存

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

2019-09-04 09:14:35 792

原创 Shiro之Defaultsecuritymanager方法分析

Defaultsecuritymanager继承了AuthenticationSecuritymanager login()传入的有@controller层传入的token logout: 1、清除rememberme 2、清除缓存 3、清除subject 4、清除principals DelegatingSubject=SecurityUtil.getSubuject ...

2019-09-04 09:14:26 1451

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

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

2019-09-04 09:14:16 998

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

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

2019-09-04 09:14:08 1377

原创 Shiro集成Redis解决频繁访

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

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

原创 Shiro之RedisCaheManager

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

2019-09-04 09:13:17 308

原创 RedisCahe

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

2019-09-03 19:55:29 570

原创 RedisManager

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

2019-09-03 19:53:29 489

原创 login----在controller层

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

2019-09-03 19:52:23 996

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

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

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

2019-09-03 19:40:03 337

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

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

2019-09-03 19:38:16 311

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

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

2019-09-03 19:31:54 469

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

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

2019-09-03 17:51:54 270

原创 Shiro身份验证----subject提交

获取subject对象 1、SecurityUtils.getSubject() 2、调用的是ThreadContext 2、从ThreadContext获取Subject 1、其内部有静态创建了ThreadLocal<Map<Object,Object>> 2、获取subject的key:org.apache.shiro.util.ThreadCon...

2019-09-03 17:41:34 945

原创 访问之subject--存储

1、绑定到 ThreadContext 1、execute 1、remove:移除以该线程为key的securitymanager 2、在储存 remove bind 更新 最后移除shirofilterbean

2019-09-03 17:37:56 379

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

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

2019-09-03 17:36:29 373

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

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

2019-08-02 20:07:46 569

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

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

2019-07-26 16:45:10 211

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

空空如也

空空如也

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

TA关注的人

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