1、时序图
2、流程解析
本流程是以使用Ruoyi对接Pig授权中心为例,进行讲解,其他网站的的oauth的原理都和这个一样,所以只要把这个流程搞懂了即可,接下来就按照真实的流程进行逐步解析。
2.1 第1步
用户还未登录,访问ruoyi前端,ruoyi会自动跳转到自己的登录首页
大约 2 分钟
本流程是以使用Ruoyi对接Pig授权中心为例,进行讲解,其他网站的的oauth的原理都和这个一样,所以只要把这个流程搞懂了即可,接下来就按照真实的流程进行逐步解析。
用户还未登录,访问ruoyi前端,ruoyi会自动跳转到自己的登录首页
1. 使用idea新建一个springboot项目,引入web和security框架,不做任何配置直接启动web项目
2. 随便访问一个接口比如:http://localhost:8080/hello/aa,此时由于接口被security默认保护,会重定向到登录页面(如图一),此时查看sessionid(也就是name为JSESSIONID的cookie)是91E9629F748637154F86CCB44FB2B23D
3. 然后输入用户名:user,密码:控制台随机生成的,登录后会重定向到之前访问的接口,但此时
查看JSESSIONID发现变了,变成87957B71A3CEA4FA375CFFACA6AD425D
前后分离项目使用不同登录方式进行登录
1. 使用帐号/密码登录
2. 使用手机号/验证码登录
注
Security是一个扩展性很强的框架,预留了各种端点进行扩展,多种方式登录需要扩展AuthenticationProvider,进行自定义实现。默认情况 Security使用的是DAOAuthenticationProvider,就是从数据库中读取用户名/密码进行校验。
第一次接触这个类,在SpringSecurity中,大概百度了一下,知道此类是限制一次请求只
走一次过滤器,但是我不明白为啥要做这个限制,或者说难道还有一次请求会走两次过滤器?
学习一个框架最好的文档肯定是看官方doc,以下是官方doc对此类的注释,简单来说就是确保 一个请求在一个过滤器只执行一次doFilter,因在在不同版本的Servlet容器中是存在多次执 行doFilter的可能的,比如一个request forward到另一个request,在servlet2.0和3.0 表现可能都不一样,在Tomcat和weblogic容器中可能表现也不一样,为了统一此行为,所以 Spring官方提供了此类。