自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大佬味的小男孩的博客https://www.yuque.com/dalaoweidexiaonanhai

大佬味的小男孩的博客https://www.yuque.com/dalaoweidexiaonanhai

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

原创 (八) OAuth 2.0 认证成功,认证失败,退出成功

认证成功监听AuthenticationSuccessEvent,注意在刷新令牌,校验令牌,登录密码校验成功都会发布这个事件,所以我们需要在监听器里面做一些排查判断。successHandler是自定义业务逻辑类。/** * @description: 登录成功事件监听器 * @Author C_Y_J * @create 2022/1/13 16:36 **/public class AuthenticationSuccessEventListener implements Applicat

2022-05-30 14:08:25 2924 3

转载 (七) OAuth 2.0 自定义异常处理格式

前言本篇文章的代码较多,但是核心的点是:exceptionTranslator、authenticationEntryPoint只要百度搜索关键字基本上都会关于这两个的介绍exceptionTranslator/**@description: oauth2 认证服务异常处理,重写oauth2的默认实现@Author C_Y_J@create 2022/1/12 9:48**/public class CustomWebResponseExceptionTranslator im

2022-05-23 15:42:51 1801

转载 (六)OAuth 2.0 RedisTokenStore

Maven依赖 <!--redis 依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>授权服务器(Authoriz

2022-05-13 17:09:51 2905

转载 (五)OAuth 2.0 密码模式(Password)后续一

授权服务器(Authorization Server)UserDetailsServiceImpl:package com.authorization.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.security.core.authority.AuthorityUtils;import org.springframework.security.co

2022-05-13 17:08:48 346

转载 (五)OAuth 2.0 密码模式(Password)

前言我们了解到授权码模式是OAuth2.0四种模式流程最复杂模式,复杂程度由大至小:授权码模式 > 隐式授权模式 > 密码模式 > 客户端模式其中密码模式的流程是:让用户填写表单提交到授权服务器,表单中包含用户的用户名、密码、(client_Id + client_secret)的加密串,授权服务器先解析并校验客户端信息,然后校验用户信息,完全通过返回access_token,否则默认都是401 状态码,提示未授权无法访问Demo基本结构这里主要关注security-authori

2022-05-13 17:07:51 4528 1

转载 (四)OAuth 2.0 隐式授权模式(Implicit)

前言隐式授权模式要求:用户登录并对第三方应用进行授权,直接返回访问token,通过token访问资源。相比授权码模式,它少了一次授权码的颁发与客户端使用授权码换取token的过程。隐式授权模式适用场景适用场景有以下几个条件:用户参与:使用隐式授权需要与用户交互,用户对授权服务器进行登录与授权。单页应用:SPA前端,没有后端或者后端属于授权方。客户端密码:访问授权时,不需要带第三方应用secret,前提是资源服务校验token使用的client信息与客户端(第三方应用)不同,且配置了secret

2022-05-13 17:06:46 1608

转载 (三)OAuth 2.0 授权码模式 (Authorization Code)

前言在文章 OAuth 2.0 概念及授权流程梳理 中我们谈到OAuth 2.0的概念与流程,这里我准备分别记一记这几种授权模式的demo,一方面为自己的最近的学习做个总结,另一方面做下知识输出,如果文中有错误的地方,请评论指正,在此不胜感激。阅读本文,默认读者已经过Spring Security有一定的了解,对OAuth2.0流程有一定了解。带领读者对Spring Security OAuth2.0框架的授权码模式有一个比较直观的概念,能使用框架搭建授权码模式授权服务器与资源服务器(前后端分离版本)

2022-05-13 17:05:27 2004

转载 (二)OAuth 2.0 客户端模式(ClientCredentials)

2022-05-13 17:02:46 1679

转载 (一)OAuth 2.0 概念

OAuth2 .0的概念OAuth是一个关于授权的开放网络标准,OAuth2.0是其2.0版本。它规定了四种授权模式来确保安全应用场景有第三方应用的接入、微服务鉴权互信、接入第三方平台、第一方密码登录等。OAuth2.0授权模式OAuth2.0定义了四种授权模式来对资源的访问进行控制:授权码模式(Authorization Code Grant)隐式授权模式(Implicit Grant)用户名密码模式(Resource Owner Password Credentials Grant)客

2022-05-13 15:39:22 788

原创 java面试题—集合基础

java基础—集合集合1 fail-fast 与 fail-safe 机制有什么区别?2 说出ArrayList,Vector, LinkedList的存储性能和特性3 HashMap3.1 HashMap的工作原理是什么3.2HashMap 的 table的容量如何确定?loadFactor 是什么? 该容量如何变化?这种变化会带来什么问题?3.3 HashMap 和 HashTable、ConcurrentHashMap 的区别HashTableHashMapConcurrentHashMap3.4

2022-05-13 14:49:19 538 1

原创 (一)基于Session的认证方式

创建工程本案例工程使用maven进行构建,使用SpringMVC、Servlet3.0实现。创建maven工程 security-springmvc,工程结构如下:引入如下依赖如下,注意:1、由于是web工程,packaging设置为war2、使用tomcat7-maven-plugin插件来运行工程<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"

2022-05-13 14:48:44 705 2

原创 Cannot construct instance of `******` (no Creators, like default construct,exist)

问题记录:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class

2022-05-13 14:48:15 2534

原创 mybatis-plus 自动填充功能

mybatis-plus 自动填充功能,自动设置插入时间,更新时间原理:实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler自定义实现类 MyMetaObjectHandler@Slf4j@Componentpublic class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(

2021-03-19 12:34:49 280

原创 mybatis-plus 通用枚举

前言自3.1.0开始,如果你无需使用原生枚举,可配置 默认枚举 来省略 扫描通用枚举配置1. 声明通用枚举属性1.1.1 方式一: 使用 @EnumValue 注解枚举属性@Getterpublic enum GenderEnum { male(1,"男"), female(2,"女"), unknown(3,"未知"); @EnumValue//标记数据库记录的值是code private final int code; private fin

2021-03-19 11:55:03 399 1

原创 mybatis-plus 分页插件

前言分别讲解 mybatis-plus 3.3.2 和 mybatis-plus 3.4.0的区别:mybatis-plus 3.3.2 版本及以下只支持 PaginationInterceptor 分页mybatis-plus 3.4.0 版本及以上推荐使用 MybatisPlusInterceptor 分页mybatis-plus 3.3.2 <parent> <groupId>org.springframework.boot</groupI

2021-03-19 10:36:37 282

原创 mybatis-plus 全局逻辑删除

前言分别讲解 mybatis-plus 3.2.0 和 mybatis-plus 3.3.0的区别:mybatis-plus 3.2.0 不支持全局逻辑删除的实体字段名,支持设置逻辑删除的值mybatis-plus 3.3.0 支持全局逻辑删除的实体字段名,支持设置逻辑删除的值mybatis-plus 3.2.0springboot 加 mybatis-plus-boot-starter 来测试 <parent> <groupId>org.sprin

2021-03-19 10:01:09 930

原创 mybatis-plus SQL注入原理分析

前言掌握 spring mybatis 知识,再来看本文。我这里有一个EmployeeMapper接口,根据id进行删除,打上断点,一起来探索吧!从断点里面可以看到 com.baomidou.mybatisplus.core.override.MybatisMapperProxy@650c405c 是Employeeapper接口的代理对象。我们用idea双击shift 键盘进行搜索:MybatisMapperProxy映入眼帘的第一句话是: 从 {@link MapperProxy}

2021-03-17 15:51:06 347

原创 mybatis-plus 全局主键生成策略

在每个实体类上指定主键生成策略@Data@TableName("tb_employee")public class Employee { @TableId(value="id" , type = IdType.AUTO) private Integer id ; 、、、、、、}配置文件配置全局主键生成策略mybatis-plus: global-config: db-config: # 主键ID类型 id-type: auto

2021-03-17 08:58:16 539

原创 mybatis-plus 全局驼峰命名

数据库表字段为:last_name实体类属性名为 lastName 默认情况下 mybatis-plus会自动将实体类的属性名中的 大写字母 变成 小写 并加上 下换线_ (last_name)当做数据库表字段如果实体类的属性名和数据库表的字段名没有遵循驼峰命名每个实体类单独指定字段名@Data@TableName("tb_employee")public class Employee { 、、、、、、 @TableField(value = "lastName")

2021-03-16 17:57:34 1627

原创 mybatis-plus 全局表名指定

数据库表名为:tb_employee实体类名称为 Employee 默认情况下 mybatis-plus会自动将实体类的类名首字母变成小写(employee)当做数据库表名每个实体类单独指定表名@Data@TableName("tb_employee")public class Employee { 、、、、、、}配置文件配置表前缀mybatis-plus: # 表名前缀 global-config: db-config: table-prefix:

2021-03-16 15:25:45 2313

原创 数据源类型转换异常

日志:警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataSource’ defined in class path resource [applicationContext.xml]: Initializ

2021-03-04 14:59:55 4065 1

原创 spring注解开发

spring原始注解:Spring原始注解主要是替代<Bean>的配置注解作用使用在类上用于实例化Bean使用在controller层类上用于实例化Bean使用在service层类上用于实例化Bean使用在mapper层类上用于实例化Bean使用在字段上用于根据类型依赖注入结合@Autowired一起使用,用于根据名称进行依赖注入相当于@Autowired+@Qualifier,按照名称进行注入注入普通属性

2021-02-26 09:50:35 71

原创 (十)Spring Security (spring-cloud-starter-oauth2)应用详解------注册中心------网关

1、认证服务负责认证授权。2、所有请求经过 网关到达微服务3、网关负责鉴权客户端以及请求转发4、网关将token解析后传给微服务,微服务进行授权。注册中心

2021-01-31 20:02:08 300

原创 (九)Spring Security (spring-cloud-starter-oauth2)应用详解------JWT令牌------数据库存储

前提:在看完这两篇文章的基础上再进行本篇文章的开发(七)Spring Security (spring-cloud-starter-oauth2)应用详解(八)Spring Security (spring-cloud-starter-oauth2)应用详解通过上边的测试我们发现,当资源服务和授权服务不在一起时,资源服务使用RemoteTokenServices 远程请求授权服务验证token,如果访问量较大将会影响系统的性能 。解决上边问题:令牌采用JWT格式即可解决上边的问题,用户认证通过会得

2021-01-31 18:58:01 760

原创 (八)Spring Security (spring-cloud-starter-oauth2)应用详解------资源服务------密码模式

前提:在看完这一篇文章的基础上再进行本篇文章的开发(七)Spring Security (spring-cloud-starter-oauth2)应用详解创建 order 资源服务器配置依赖如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in

2021-01-31 15:31:39 1199

原创 (七)Spring Security (spring-cloud-starter-oauth2)应用详解------认证授权服务------授权码模式和密码模式

OAuth2.0介绍OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。Oauth协议目前发展到2.0版本,1.0版本过于复杂,2.0版本已得到广泛应

2021-01-30 17:57:20 5156 6

原创 (六)分布式系统认证方案

什么是分布式系统随着软件环境和需求的变化 ,软件的架构由单体结构演变为分布式架构,具有分布式架构的系统叫分布式系统,分布式系统的运行通常依赖网络,它将单体结构的系统分为若干服务,服务之间通过网络交互来完成用户的业务处理,当前流行的微服务架构就是分布式系统架构,如下图:分布式系统具体如下基本特点:1、分布性:每个部分都可以独立部署,服务之间交互通过网络进行通信,比如:订单服务、商品服务。2、伸缩性:每个部分都可以集群方式部署,并可针对部分结点进行硬件及软件扩容,具有一定的伸缩能力。3、共享性:每个

2021-01-29 16:24:44 502 2

原创 (五)Spring Security (spring-boot-starter-security)应用详解

前提:在看完这两篇文章的基础上再进行本篇文章的开发(三)Spring Security 应用详解(四)spring-boot-starter-security 工作原理连接数据库认证前边的例子我们是将用户信息存储在内存中,实际项目中用户信息存储在数据库中,本节实现从数据库读取用户信息。根据前边对认证流程研究,只需要重新定义UserDetailService即可实现根据用户账号查询数据库。创建数据库我这里MySQL版本是5.7.31创建user_db数据库CREATE DATABASE `us

2021-01-29 16:15:13 4993 1

原创 (四)spring-boot-starter-security 工作原理

Spring Security所解决的问题就是安全访问控制,而安全访问控制功能其实就是对所有进入系统的请求进行拦截,校验每个请求是否能够访问它所期望的资源。根据前边知识的学习,可以通过Filter或AOP等技术来实现,Spring Security 对Web资源的保护是靠Filter实现的,所以从这个Filter来入手,逐步深入Spring Security原理。当初始化Spring Security时,会创建一个名为 SpringSecurityFilterChain 的Servlet过滤器,类型为or

2021-01-28 21:24:53 1880

原创 (三)Spring Security (spring-boot-starter-security)应用详解

如何通过Spring Boot开发Spring Security应用,Spring Boot提供spring-boot-starter-security用于开发Spring Security应用。创建maven工程创建maven工程 security-spring-boot,工程结构如下:引入以下依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"

2021-01-28 20:53:16 2063 2

原创 (二)Spring Security 快速上手

Spring Security介绍Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。由于它是Spring生态系统中的一员,因此它伴随着整个Spring生态系统不断修正、升级,在spring boot项目中加入springsecurity更是十分简单,使用Spring Security 减少了为企业系统安全控制编写大量重复代码的工作。创建工程创建maven工程 security-spring-security,工程结构如下:引入以下依赖

2021-01-28 19:55:56 327 1

原创 Springboot 整合 mybatis-plus 快速入门

Springboot整合mybatis-plus官网链接

2021-01-24 21:51:21 89 1

原创 多线池与高并发篇章一

多线池与高并发篇章一多线池与高并发篇章一前言:上天:入地:1 进程,线程,协程,纤程1.1 怎么创建,启动一个线程?1.2 守护线程1.3 sleep方法和yield方法和join方法1.4 提问:有三个线程1,2,3,如何保证线程的执行完毕的顺序是3,2,1?2 synchronized锁2.1 练习一:volatile和synchronized分别会对输入语句有什么影响呢?二:同步和非同步的方法是否允许同时调用?三:模拟银行业务 添加数据加锁 读数据不加锁。四:synchronized是可重入锁五:程

2020-09-03 18:15:55 213

原创 多线池与高并发篇章二

多线池与高并发篇章二多线池与高并发篇章二前言:上天:入地:1. volatile关键字1.1 保证线程可见性1.2 禁止指令重排序(CPU)1.2.1 DCL单例1.2.2 在单例模式下双重检查下需不需要加volatile?1.3 原子性的问题1.4 synchronized和volatile比较2. CAS(无锁优化 自旋)2.1 开胃小菜2.2 CAS2.3 CAS原理2.4 synchronized和CAS原理的优缺点2.4.1 MarkWord2.4.2 monitor2.5 JUC下的atom

2020-09-03 17:55:57 196

原创 java面试题—线程基础

这里写目录标题线程1 Thread 常用的方法2 volatile与synchronized的区别,底层实现3 你是如何调用 wait()方法的?使用 if 块还是循环?为什么?4 多线程环境下的伪共享5 什么是 Busy spin?我们为什么要使用它?6 什么是线程局部变量?7 Java 中 sleep 方法和 wait 方法的区别?8 什么是线程?9 多线程的优点 缺点?10 多线程的实现方式11 线程安全12 多线程中的忙循换13理解ThreadLocal(线程局部变量)14 线程通信与进程通信

2020-07-31 21:32:37 342

空空如也

空空如也

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

TA关注的人

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