SpringSecurity+JWT实现前后端分离认证和授权 第二部分:测试+流程分析

目录

前言:

测试:

分为两次请求

1.第一个请求就是类似于前端请求一个登录SpringSecurity内置验证的安全登录中心

​编辑2.第二个请求就是在第一个请求成功的基础上进行请求的

流程分析【重点】:

 第一个请求的流程:

具体步骤:

 第二个请求的流程:

第二个请求的前提:

具体步骤:

 对两次请求的总结:

 为什么要这样做?


前言:

本文的测试以及流程分析,都是针对于第一部分编码部分所开展的分析与总结。之后我也会发布一

个合集来方便需要学习的朋友进行查看。

测试:

我们测试时,采用的是postman充当客户端进行测试。

 先进行启动:

分为两次请求

1.第一个请求就是类似于前端请求一个登录SpringSecurity内置验证的安全登录中心

解析如下:

为的是获取到请求服务端中我们进行配置的Controller接口的权限。如果这个登录都验证不过去,那么就没有权限去进行请求之后的

Controller中配置的接口资源

我们对于SpringSecurity内置的安全登录,是可以进行自定义配置请求地址的:我们这里配置的是/doLogin。如图:在配置类中进行配置的

我们对于SpringSecurity内置的安全登录,是可以进行自定义配置可成功登录该内置登录中心的成员用户信息,我们这里配置的是:

用户名:mxy 密码:123以及所拥有的权限集合

2.第二个请求就是在第一个请求成功的基础上进行请求的

第二个请求就是对后端服务器中的Controller类中的接口对应的资源进行的请求。

当第一个请求执行成功之后,说明SpringSecurity登录验证已经成功 。

说明可以继续请求后端资源接口。

第一个请求之后,我们就会获取一个JWT。这个JWT中就包含着我们的用户信息。然后我们就把这个JWT配置给Headers中的Authorization。

流程分析【重点】:

 第一个请求的流程:

首先我们使用postman进行请求我们自定义设置的SpringSecurity安全登录验证的接口doLogin

并且配置请求url的携带参数。参数为登录的用户名以及密码 !

具体步骤:

 1.无论什么请求都会先进行经过过滤器

 2.但是由于这是security的登录验证请求,其中并没有token,所以我们直接通过过滤器中的解析JWT的过程。

3. 跳过过滤器之后,我们会进行验证security登录。此时我们要进行判断,postman发送的请求url

中携带的用户名以及密码参数是否在我们自定义的用户中

我们自定义的用户为 :用户名为mxy ,密码为123

 4.如果登录失败:会进入到我们登录失败的处理器中进行处理

 5.如果登录成功:同理会跳转到登录成功处理器进行处理操作:

登录成功处理器,最后会把用户信息进行设置给JWT中。

然后把JWT设置给access_token。并且设置过期时间,以及token的类型为bearer

 设置完成之后进行使用流进行写出 其中还使用到了转化。

 我们通过流写出响应给客户端浏览器的数据对应的格式为JSON,编码为Utf-8

 6.结束之后,postman(客户端)上会显示服务端响应回来的数据,该数据为Json格式

这些数据就是我们上边利用PrintWriter打印流进行写出的:

 第二个请求的流程:

首先第二个请求就是对后端服务器中的Controller类中的接口对应的资源进行的请求。

当第一个请求执行成功之后,说明SpringSecurity登录验证已经成功 说明可以继续请求后端资源接口。

第二个请求的前提:

(1)第一个请求成功

(2)携带第一个请求之后返回的access_token。这个access_token其实就是JWT。我们把这个JWT

设置给Authorization。格式为 :bear+空格+JWT

具体步骤:

 1.这个请求首先会被过滤器进行拦截

2.过滤器发现这个用户已经成功进行了security验证登录。那么当该用户进行这一次请求的时候,

肯定会携带一个access_token。这个东西就是JWT。JWT中封装的就是我们用户的信息 !

所以说:过滤器的作用就是继续解析这个JWT。

3.解析完成之后,再进行封装设置。

 对两次请求的总结:

当第一次请求时,客户端postman携带想要进行登录的用户信息,服务端接收请求,然后进行登录

验证。登录验证成功之后,也就是第一次请求之后,服务端想要写出响应给客户端浏览器用户信息

(即是JWT),但是服务端会把JWT封装叫做access_token进行真正响应给客户端。

所以其实JWT=access_token。

第一次请求之后,客户端具有了已经登录用户的信息 即是access_token。

当第二次请求发出时,客户端postman把第一次请求获取到access_token中JWT数据进行设置给

第二次请求的Header字段中Authorization。第二次请求进行发出,此时过滤器进行拦截到然后进行

对这个Authorization字段进行解析。解析得到的是用户信息,此时对于第二次请求到达服务端而言

我们已经具有了该用户的信息。我们可以通过该用户的信息进行检验是否该用户已经完成了

security登录验证。如果完成了,那么就可以接着进行下一步对后端服务器资源的请求。所以说,

当第二次请求完成了过滤器对其JWT的解析之后,后端服务器就已经获取到了这个用户对应的信

息。所以当我们进行分为后端服务器资源的时候,我们会进行权限判断,此时由于我们第二次请求

中的过滤之后,我们已经把解析之后的JWT的数据 即是用户信息的数据设置给了

所以说,我们就可以进行判断是否该服务端Controller的接口是否具有用户权限进行访问 

 为什么要这样做?

因为在微服务的项目中,我们可以是多个服务端。所以说,我们一个用户信息保证完成一次

security登录验证之后,我们就可以在所有服务端进行请求资源的权力。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot和Vue.js是两个非常流行的技术栈,可以非常好地实现前后分离的开发模式。Security和JWT是两个很好的工具,可以帮助我们实现安全的登录和授权机制。 以下是实现Spring Boot和Vue.js前后分离的步骤: 1.创建Spring Boot工程 首先,我们需要创建一个Spring Boot工程,可以使用Spring Initializr来生成一个基本的Maven项目,添加所需的依赖项,包括Spring Security和JWT。 2.配置Spring Security 在Spring Security中,我们需要定义一个安全配置类,该类将定义我们的安全策略和JWT的配置。在这里,我们可以使用注解来定义我们的安全策略,如@PreAuthorize和@Secured。 3.实现JWT JWT是一种基于令牌的身份验证机制,它使用JSON Web Token来传递安全信息。在我们的应用程序中,我们需要实现JWT的生成和验证机制,以便我们可以安全地登录和授权。 4.配置Vue.js 在Vue.js中,我们需要创建一个Vue.js项目,并使用Vue CLI来安装和配置我们的项目。我们需要使用Vue Router来定义我们的路由,并使用Axios来发送HTTP请求。 5.实现登录和授权 最后,我们需要实现登录和授权机制,以便用户可以安全地登录和访问我们的应用程序。在Vue.js中,我们可以使用Vue Router和Axios来发送HTTP请求,并在Spring Boot中使用JWT来验证用户身份。 总结 以上是实现Spring Boot和Vue.js前后分离的步骤,我们可以使用Security和JWT实现安全的登录和授权机制。这种开发模式可以让我们更好地实现前后分离,提高我们的开发效率和应用程序的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值