(自用2)代码笔记——spring boot 拦截器 + vue axios + 单点登录 + JWT

本文详细介绍了如何在Spring Boot应用中使用拦截器进行登录验证,解决前后端分离的跨域问题,以及实现单点登录功能。重点包括拦截器的创建、跨域配置、拦截器与跨域配置的冲突解决方案,以及Vue Axios中的token管理和请求拦截器设置。同时,还特别提到了Vue请求的预请求(OPTIONS)可能导致的单点登录失效问题及其解决方法。
摘要由CSDN通过智能技术生成

       内容介绍:spring boot拦截器做登录验证,并实现单点登录功能(分布式项目中);

目录

一、springboot中使用拦截器(interceptor)的相关知识点

二、spring boot + vue 前后端分离跨域问题的解决:  

三、拦截器和跨域配置同时使用,跨域配置失效的解决方案:

四、spring boot + vue 单点登录的实现

!!!!注意:


一、springboot中使用拦截器(interceptor)的相关知识点

        首先,先介绍最基本的拦截器的创建

        ①自定义类,让其实现HnadlerInterceptor接口,并实现其三个方法:

perHandle:在请求进来之前进行作用——主要的拦截实现逻辑在该方法中实现

postHandle:在请求处理之后进行作用:

afterCompletion:都将会进行处理的步骤:

        注意:在perHandler方法中,依据返回值Boolean的值来表示,本次的拦截是放行(True)还是阻止(False),放行则请求继续往下进行,阻止则表示请求无法访问其预期的资源。

        ②自定义类,让其实现WebMvcConfigurer接口作为同意的spring mvc相关的配置类(该配置类需使用@Configuration交给spring管理);在该接口中,有许多与mvc配置相关的方法,如果要实现拦截器,则需要重写其addInterceptors方法;

@Configuration
public class MyInterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 通过registry的addInterceptor方法,创建InterceptorRegistration对象,参数传递自定义拦截器类
        InterceptorRegistration registration = registry.addInterceptor(new MyInterceptor());
        // addPathPatterns(),方法为指明需要拦截的目录,可传递list或者数组
        registration.addPathPatterns("/**"); 
        // excludePathPatterns,方法为指明不进行拦截的目录,可传递list或数组;
        registration.excludePathPatterns("/it/hr/login");
        
        // 目录书写格式为从端口号后开始书写——也可以理解为从controller类上的url格式开始书写
    }

        如此便完成springboot中拦截器的配置;

二、spring boot + vue 前后端分离跨域问题的解决:  

        首先,来说说跨域问题

        出现跨域的原因在于,访问资源的请求的协议、ip地址、端口号三者中有任意一个与所请求的资源的协议、ip地址和端口号不同,便会产生跨域问题,

        举例说明,在使用spring boot + vue 进行前后端分离开发时,spring boot后端项目运行在tomcat服务器上,其有着自己ip地址和端口号(测试环境下可能ip地址是相同的),而vue项目运行在node.js服务器上,也有着自己的ip地址和端口号,当需要在vue中访问spring boot项目提供的接口时,便会因为二者的端口号不同而产生跨域问题;

        接着,跨域问题的解决:

        跨域问题的解决有多种方案,这边先罗列2种(更多的有待进一步更新):

        ①通过在每一个controller上使用@CrossOrigin注解,解决跨域问题;

        ②在Mvc配置类种,配置addCorsMappings方法来一次性解决跨域问题:

    @Override
    public void addCorsMappings(Co
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Netcore6.0是微软推出的全新版本的开发框架,它提供了强大且灵活的功能,用于构建Web应用程序和API。Web API是Netcore6.0中的一项重要功能,它允许我们构建基于HTTP协议的API,并通过JSON格式进行数据交换。 JWT(JSON Web Token)是一种用于在网络应用间传递信息的安全方法。在Netcore6.0中,我们可以使用JWT实现Web API的授权功能。JWT由三部分组成:头部、载荷和签名。头部包含了令牌的类型和算法,载荷包含了我们想要传递的数据,签名通过使用密钥进行加密来验证令牌的合法性。 在Netcore6.0中,我们可以使用Microsoft提供的Microsoft.AspNetCore.Authentication.JwtBearer包来简单地实现JWT的授权功能。首先,我们需要在Startup.cs文件的ConfigureServices方法中配置JWT的身份验证服务,并指定密钥、颁发者、验证等参数。然后,在Configure方法中启用身份验证中间件和JWT授权中间件。 在Vue3中,我们可以使用Axios库来发送HTTP请求并附带JWT令牌进行授权。Vue3是一种流行的JavaScript框架,用于构建现代化的用户界面。通过Axios,我们可以将JWT令牌添加到请求的Authorization头部中,并在后端接收到请求时进行验证。 为了实现Vue3与Netcore6.0的JWT授权,我们首先需要在Vue3项目中安装Axios库,并配置请求拦截器,在每个请求发送前将JWT令牌添加到请求头中。后端接收到带有JWT令牌的请求后,使用相同的密钥和算法进行解密并验证令牌的合法性。 综上所述,Netcore6.0的Web API和Vue3的JWT授权组合,可以实现安全可靠的API授权。通过合理的配置和使用,我们可以保护API免受未经授权的访问,并确保只有经过身份验证的用户才能访问敏感数据或执行特定操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值