自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

codeing-tiger

工作学习中的记录总结

  • 博客(36)
  • 收藏
  • 关注

转载 SpringBoo-过滤器、拦截器、监听器

参见:https://my.oschina.net/xiedeshou/blog/1859754前言在实际开发过程中,经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏高词汇、访问权限控制(URL级别)等业务需求。这些对于业务来说一般上是无关的,业务方是无需关系的,业务只需要关系自己内部业务的事情。所以一般上实现以上的功能,都会或多或少的用到今天准备讲解的过滤器、监听...

2020-04-05 11:07:01 301

转载 设计模式:设计原则

转载于:https://www.cnblogs.com/pony1223/p/7594803.html从今年的七月份开始学习设计模式到9月底,设计模式全部学完了,在学习期间,总共过了两篇;第一篇看完设计模式后,感觉只是脑子里面有印象但无法言语。于是决定在看一篇,到9月份第二篇设计模式总于看完了,这一篇看完,脑子里面已经能够对绝大多数的设计模式能够说出其核心思想且可以画出类图也知道应用场景,算是...

2019-06-13 21:22:40 281

转载 java8-lambda表达式

转载:https://github.com/biezhi/learn-java8/blob/master/java8-lambda/README.md#lambda-%E8%A1%A8%E8%BE%BE%E5%BC%8Flambda 表达式命令式和函数式命令式编程:命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。声明式编程:告诉“机器”...

2019-05-24 08:30:17 244

转载 java8-Stream流

转载:https://github.com/biezhi/learn-java8/blob/master/java8-stream/README.md#%E4%BD%BF%E7%94%A8%E6%B5%81Stream关于流什么是流?流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种高级集合。 众所周知,集合操作非常麻烦,若要对集合进行筛选、投影,需要...

2019-05-23 08:50:49 203

原创 java8-Optional空处理

转载:https://www.cnblogs.com/xingzc/p/5778090.htmlOptional类的方法方法 描述 empty 返回一个空的 Optional 实例 filter 如果值存在并且满足提供的断言, 就返回包含该值的 Optional 对象;否则返回一个空的 Optional 对象 map 如果值存在,就对该值执行提供的 ma...

2019-05-22 22:19:09 721

原创 spring-security-oauth2 系列笔记目录导航

本系列笔记参考慕课网Spring Security开发安全的REST服务 Spring Security+Spring Social+Spring Security OAuthspring-security-oauth2(一) 项目环境搭建 spring-security-oauth2(二) 自定义个性化登录 spring-security-oauth2(三) 认证流程源...

2019-05-07 09:15:08 2401 3

原创 spring-security-oauth2 (二十九) 总结

本系列博客全程参考仿照慕课网Spring Security开发安全的REST服务,里面更加详细,老师讲的很好,请大家购买支持!https://coding.imooc.com/class/134.html源码地址:本项目源码仓库:https://gitee.com/krui/tiger-auth老师项目源码仓库:https://github.com/jojozhai/...

2019-05-07 09:06:07 681 2

原创 spring-security-oauth2 (二十八) RBAC权限控制

一般的内部管理系统,权限比较复杂,通常权限都是动态配置的,也就是下面我们要讲的的rbac模型RBAC详细原理请度娘,这里只是涉及到企业权限的功能级权限,数据级权限还要我们自己控制(用户只能看见它相关的业务表数据)Spring Security中支持我们自定义的实现,就像这样调用,下面我们来代码实现config.anyRequest().access("@rbacS...

2019-05-07 08:43:11 4428 2

原创 spring-security-oauth2 (二十七) Spring Security 权限表达式

权限表达式通过源码分析可知,最终的配置都会转成ExpressionUrlAuthorizationConfigurer.AuthorizedUrl并进行投票决定。常见表达式如下:如何写联合表达式呢?就是既满足A条件,也满足B条件.antMatchers("xx").access("hasRole('ROLE_USER') and hasRole('ROLE_SUPER')")...

2019-05-06 13:10:25 823

原创 spring-security-oauth2(二十六) Spring Security授权源码解析

原理流程图spring security的基本原理之前讲解过了。这章主要看后面两个:FilterSecurityInterceptor决定该用户是否有权限访问指定的资源ExceptionTranslationFilter异常处理,如果不能访问,则处理FilterSecurityInterceptor中抛出的异常AnonymousAuthenticationFilter...

2019-05-05 21:36:16 405

原创 spring-security-oauth2(二十五) Spring Security授权简介

授权概念权限系统通常要解决认证和授权认证,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。 授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等)。前面我们分析的都是认证,即你是谁问题?这篇我们来分析你能做什么的问题。授权分析权限是某个资源能否杯用户访问,而并不...

2019-05-05 21:22:18 524

原创 spring-security-oauth2(二十四) 基于JWT的SSO单点登录

单点登录原理何谓单点登录? 请看下面这篇博客单点登录与简单实现首先创建我们的项目架构,不在原来的项目上进行了,便于理解分析,项目架构如下tiger-sso 是pom项目,同时也是tiger-auth的子模块SSO认证服务器项目pom文件<?xml version="1.0" encoding="UTF-8"?><project x...

2019-05-05 18:12:26 1516 1

原创 spring-security-oauth2(二十三) 基本令牌配置及JWT扩展解析

令牌前面我们用的都是默认配置,其实令牌的样式及存储我们都可以进行定制,这章我们主要完成基本的Token参数配置 使用jwt替换默认的token 扩展和解析jwt的信息基本的Token参数配置硬编码配置token是在认证服务器处理的。springboot2.x和1.x的配置不太一样,这点我们要注意。分析源码可知OAuth2AuthorizationServerCo...

2019-05-01 21:06:56 1681

原创 spring-security-oauth2(二十二) 重构注册逻辑

浏览器注册模式前面的我们社交登录都是基于用户的社交信息都已经存在于数据库中了,如果用户首次登录该怎么办呢?回顾下我们的浏览器注册逻辑。具体详细步骤社交注册1.当第一次用社交用户信息登录,会默认跳到我们自定义的注册界面2.在跳到注册页之前,会把第三方用户信息放到session中3.默认提供一个 /social/user 请求可以拿到我们的用户信息展示用户,注册或绑定后会...

2019-04-30 17:34:10 617 1

原创 spring-security-oauth2(二十一) 重构社交登录

重构社交登录app里面的第三方登录不像浏览器中一样,一般是通过调用sdk(服务提供商),一般有2中模式。浏览器社交登录流程简化模式从流程图分析,我们要提供一个用openId登录后台,这个流程和短信登录很相似,只是openId是从我们的社交用户表(UserConnection)中获取。直接上代码OpenIdAuthenticationTokenpackage co...

2019-04-23 18:11:52 807 1

原创 spring-security-oauth2(二十) 重构短信登陆

app中无cookie概念,我们用设备id(deviceld)来代替session机制,其实就是存储机制不一样,我们可以将app的验证码存放在redis中在core项目中定义一个存储接口 CaptchaRepositorypackage com.rui.tiger.auth.core.captcha;import org.springframework.web.context....

2019-04-21 21:26:03 1337

原创 spring-security-oauth2(十九) 重构用户名密码登陆

在开始重构前我们来回忆下前面的流程三种方式登陆成功后组装后续流程返回token,必须携带basic client信息(因为需要它获取clientDetails信息)ok分析完流程后我们进行重构。先直接用浏览器的配置进行修改后续继续重构优化登陆成功转换token处理package com.rui.tiger.auth.core.authentication;i...

2019-04-21 08:52:42 1526

原创 spring-security-oauth2(十八 ) SpringSecurityOAuth核心源码解析

要重写我们前面已经写好的三种认证模式,使其支持token我们有必要对源码进行一定的了解才能进行扩展。绿色的代表类,蓝色的代表接口TokenEndpoint :整个流程入口点,可以理解成controllerClentDetailsService : 读取第三方应用信息TokenRequest : 封装了提交的参数信息,ClentDetails也封装其中TokenGranter ...

2019-04-17 09:27:38 743

原创 spring-security-oauth2(十七 ) 实现标准的Oathh2服务提供商

基于传统的session机制,主要存在下面三个问题开发繁琐 安全性和客户体验差 有些前段技术不支持cookie,如小程序。基于token的方式(令牌)1.参数或请求头中添加token2.token可以进行定制(jwt)SpringSecurityOAuth封装了服务提供商大部分的操作;而SpringSocial则是封装了客户端和服务提供商交互的流程协议中没...

2019-04-09 09:09:58 974 1

原创 spring-security-oauth2(十六 ) 退出登录

退出登陆如何退出登录 security默认退出登录处理逻辑 自定义退出登录默认是/logout退出登录。security默认退出登录处理逻辑使当前session失效 清除与当前用户相关的remember-me记录 清空当前的SecurityContext 重定向到登录页自定义退出登录com.rui.tiger.auth.browser.config.BrowserSe...

2019-03-12 12:25:43 12533 5

原创 spring-security-oauth2(十五 ) 单机集群session管理

单机session管理目前为止我们已经主要实现了三种登录用户+密码登录(表单) 手机号+短信登录(表单) 社交账单登录(oauth授权)它们都有一个共同点,用户认证成功的信息都是放在session中,下面我们处理session要面对的几个问题。1.session超时处理 超时时间如何设置 失效路径策略配置2.session并发控制 用户在a机器...

2019-01-23 09:27:12 4375 2

原创 spring-security-oauth2(十四 ) 社交账号绑定与解绑

要实现绑定与解绑,首先我们需要知道社交账号的绑定状态,绑定就是重新走一下OAuth2流程,关联当前登录用户(将系统用户和社交账户绑定),解绑就是删除UserConnection表数据。Spring Social默认在ConnectController类上已经帮我们实现了以上的需求。获取绑定状态只有数据没有视图这个要我们根据需求来实现org.springframework.social....

2019-01-19 11:13:34 1654

原创 spring-security-oauth2(十三 ) 微信登录

微信登陆和QQ登陆大致流程一致,只是有些api不一样,主要是QQ的getUserInfo微信多了一个参数openId。这是因为微信互联文档中在OAuth2.0的认证流程示意图第五步时,微信的openid 同access_token一起返回。而Spring Social获取access_token的类AccessGrant.java中没有openid微信暂时没有申请测试账户,先上代码后续网站备案...

2019-01-10 18:48:20 9839 2

原创 spring-security-oauth2(十二 ) 注册逻辑

为何跳转signup在上一章结尾中,扫码登录后就会调到就跳到signup注册页面,这是怎么回事呢?我们来跟下源码。org.springframework.social.security.SocialAuthenticationProvider#authenticateorg.springframework.social.security.SocialAuthenticationF...

2019-01-08 09:21:00 1973

原创 spring-security-oauth2(十一) QQ登陆下

 QQ登陆下登陆本地调试在上篇文章结尾中我们登陆报回调地址错误 这是怎么回事呢?原来第三方应用引导用户到认证服务器和认证服务器带着授权码的返回到第三方应用的地址是一样的都为/auth/qq。但是由于回调域名只支持80端口,所以将我们的项目端口修改成80端口或者做端口映射,同时修改hosts文件来进行本地调试。比如在qq互联中心申请的回调地址为 http://www.ictgu.cn/l...

2019-01-06 18:33:42 1835 1

原创 spring-security-oauth2(十) QQ登陆上

QQ登陆上依据上篇的社交登陆流程我们来进行开发右半边:服务提供商相关实现(1-6步)ServiceProvider(AbstractOAuth2ServiceProvider):服务提供商抽象(如微信 qq等)         OAuth2Operations(OAuth2Template):封装了1-5的步骤(标准流程)         Api(AbstractOAuth...

2019-01-05 15:46:56 1927 1

原创 spring-security-oauth2(九) OAuth 2.0协议及SpringSocial简介

从本篇起,我们将利用SpringSocial进行第三方登录开发,它其实利用的是OAuth 2.0协议,所以有必要先了解下。对OAuth 2.0协议还不太清楚的同学可以先看看下面这2篇文章,阮一峰大神的理解OAuth 2.0https://www.cnblogs.com/Wddpct/p/8976480.html1.OAuth 2.0协议1.1 oauth协议要解决问题考虑这...

2018-12-29 08:57:41 1199

原创 spring-security-oauth2(八) 短信密码登录重构

短信密码登录重构抽取重复的代码 将一些变量用常量或枚举类管理起来 对一些流程进行抽象封装,方便扩展比如前面我们的短信和验证码过滤器流程很相似,还有系统置不够清晰糅杂在一起了等。关于用户名密码登录和短信登录表单提交的url地址,不需要真实存在, 因为这个是提供这两个特定过滤器框架特定的拦截点。只有提交到指定的拦截点, 才会进入认证功能服务。重构验证码过滤器重构Captc...

2018-12-29 08:48:44 1104

原创 SpringBoot-注解系列

一.java注解原理 二.spring常用注解@Conditional系列@Conditional(TestCondition.class)@ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)@ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean)@ConditionalOnExpression(当...

2018-12-27 18:34:38 196

原创 spring-security-oauth2(七) 自定义短信登陆开发

短信登陆开发原理基本原理:SmsAuthenticationFilter接受请求生成SmsAuthenticationToken,然后交给系统的AuthenticationManager进行管理,然后找到SmsAuthenticationProvider,然后再调用UserDetailsService进行短信验证,SmsAuthenticationSecurityConfig进行配置 ...

2018-12-19 09:14:26 1775 1

原创 spring-security-oauth2(六) 短信验证码接口开发

短信验证码接口开发短信验证码生成接口 短信验证码发送接口 短信生成策略模板模式重构1.短信验证码接口开发1.1短信验证码生成接口发送短信验证码controllerpackage com.rui.tiger.auth.core.captcha;import lombok.extern.slf4j.Slf4j;import org.springframework.bean...

2018-12-15 22:31:45 1523 3

原创 spring-security-oauth2(五) 记住我

添加记住我功能记住我功能基本原理 实现记住我功能 记住我SpringSecurity源码分析1.记住我功能基本原理过滤器链  2.实现记住我功能 给登录界面添加记住我选项&lt;html&gt;&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;登录&lt;/title&gt;&lt;..

2018-12-13 12:49:37 1755

原创 spring-security-oauth2(四) 图片验证码

图片验证码图片验证码生成接口 认证流程加入图片验证码校验 图片验证码重构1.图片验证码生成接口调用com.google.code.kaptcha.Producer生成图片验证码 将随机数存到session缓存中 将生成的图片写到响应流中图片验证码封装类  ImageCaptchaVopackage com.rui.tiger.auth.core.captcha;imp...

2018-12-11 08:58:55 5698 2

原创 spring-security-oauth2(三) 认证流程源码分析

认证流程源码分析之前的代码中,我们自定义了登陆路径,自定义成功和失败处理器以及自定义的用户登陆信息校验,下面我们通过简单的源码分析,来把这些串联起来认证流程处理说明 认证结果如何在多个请求之间共享 获取认证用户信息认证处理流程说明spring-security过滤器链关于web中过滤器 、拦截器 、监听器区别 https://blog.csdn.net/Jintao_Ma/a...

2018-12-09 13:32:20 2761

原创 spring-security-oauth2(二) 自定义个性化登录

自定义认证逻辑1.认证逻辑接口spring-security用户登录逻辑验证接口org.springframework.security.core.userdetails.UserDetailsService只有一个方法UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;...

2018-12-07 13:56:16 14240 4

原创 spring-security-oauth2(一) 项目环境搭建

 本篇博客主要记录的是学习利用Spring Security技术栈开发企业级认证与授权。1.项目组织架构 项目模块介绍tiger-auth 项目 介绍  tiger-auth 聚合项目,主要控制整个项目所需依赖的版本 tiger-auth-core 认证与授权的核心模块 tiger-auth-browser 浏览器作为客户端的认证与授权...

2018-12-07 13:56:03 2248 2

空空如也

空空如也

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

TA关注的人

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