跳至主要內容
Ruoyi使用oauth对接pig

1、时序图

时序图

2、流程解析

本流程是以使用Ruoyi对接Pig授权中心为例,进行讲解,其他网站的的oauth的原理都和这个一样,所以只要把这个流程搞懂了即可,接下来就按照真实的流程进行逐步解析。

2.1 第1步

用户还未登录,访问ruoyi前端,ruoyi会自动跳转到自己的登录首页
20230104105625


chenkun大约 2 分钟SecurityOAuth
Security中的Session

1、背景(问题复现)


1. 使用idea新建一个springboot项目,引入web和security框架,不做任何配置直接启动web项目
2. 随便访问一个接口比如:http://localhost:8080/hello/aa,此时由于接口被security默认保护,会重定向到登录页面(如图一),此时查看sessionid(也就是name为JSESSIONID的cookie)是91E9629F748637154F86CCB44FB2B23D
3. 然后输入用户名:user,密码:控制台随机生成的,登录后会重定向到之前访问的接口,但此时
   查看JSESSIONID发现变了,变成87957B71A3CEA4FA375CFFACA6AD425D

chenkun大约 2 分钟Security
Security扩展自定义登录方式

1、需求

前后分离项目使用不同登录方式进行登录
    1. 使用帐号/密码登录
    2. 使用手机号/验证码登录

2、实现方法

Security是一个扩展性很强的框架,预留了各种端点进行扩展,多种方式登录需要扩展AuthenticationProvider,进行自定义实现。默认情况 Security使用的是DAOAuthenticationProvider,就是从数据库中读取用户名/密码进行校验。


chensino大约 4 分钟Security
OnecePerRequestFilter

1、OnecePerRequestFilter初识

第一次接触这个类,在SpringSecurity中,大概百度了一下,知道此类是限制一次请求只
走一次过滤器,但是我不明白为啥要做这个限制,或者说难道还有一次请求会走两次过滤器?

1.1 源码doc

学习一个框架最好的文档肯定是看官方doc,以下是官方doc对此类的注释,简单来说就是确保 一个请求在一个过滤器只执行一次doFilter,因在在不同版本的Servlet容器中是存在多次执 行doFilter的可能的,比如一个request forward到另一个request,在servlet2.0和3.0 表现可能都不一样,在Tomcat和weblogic容器中可能表现也不一样,为了统一此行为,所以 Spring官方提供了此类。


chenkun大约 3 分钟Security