> 文章列表 > 亲测有效!SpringBoot项目采用JWT登录认证与保持,并解决跨域问题

亲测有效!SpringBoot项目采用JWT登录认证与保持,并解决跨域问题

亲测有效!SpringBoot项目采用JWT登录认证与保持,并解决跨域问题

目录

  • 一、配置JWT详细教程
  • 二、加了JWT后出现的跨域问题解析

一、配置JWT详细教程

系统环境:

  • SpringBoot后端项目,引入了Security依赖,采用了配置Security类来解决跨域问题
  • 前端采用VUE框架以及axios方法

参考教程:《实践:前后端分离实现JWT登录验证,包括前、后端配置》一步步跟着做就可以了。

二、加了JWT后出现的跨域问题解析

可能原因1:
SpringBoot加了拦截器后出现的跨域问题解析
SpringBoot使用Jwt处理跨域认证问题
可能原因2:
这个问题可能是由于前端发送请求时没有将token放入请求的header中导致的。在使用JWT实现认证时,需要将生成的token存储到前端,并在每次向后端发送请求时将token放入请求header中,这样后端才能识别该用户是否已登录以及是否有权限访问该接口。
你可以在前端代码的main.js中添加一个拦截器,在请求被发送出去之前,将存储在localstorage中的token添加到请求header中,例如:

axios.interceptors.request.use((config) => {const token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;},(error) => Promise.reject(error)
);

这段代码会在每次请求前检查localstorage中是否存在token,并将其添加到请求的header中。这样,当后端接收到请求时,就可以从header中获取token并进行认证和授权操作了。
注意:为了避免XSS攻击,不要直接将token存储在localstorage中,可以考虑使用sessionStorage或者cookie等更加安全的存储方式。
这里是将《实践:前后端分离实现JWT登录验证,包括前、后端配置》里前端main.js的拦截器代码重写了一下,我是这个问题。