跨域与拦截器

一、跨域配置(addCorsMappings 方法)

@Override
public void addCorsMappings(CorsRegistry registry) {
    // 允许跨域的配置
    registry.addMapping("/**")  // 对所有请求路径生效
            .allowedOrigins("*")  // 允许所有来源(域名)的请求,生产环境建议指定具体域名(如 "https://your-domain.com")
            .allowedMethods("GET", "POST", "PUT", "DELETE")  // 允许的 HTTP 方法
            .allowedHeaders("*")  // 允许请求头携带任意字段
            .exposedHeaders("*");  // 允许响应头暴露任意字段(前端可通过 JavaScript 访问)
}

作用
解决浏览器的跨域限制(同源策略),允许其他域名的前端项目访问当前后端接口。例如:

  • 前端项目部署在 http://localhost:3000,后端在 http://localhost:8080,默认会被浏览器阻止请求,通过此配置可放行。
  • * 是通配符,表示 “所有”,生产环境建议改为具体域名(如 https://www.neuedu.com)以提高安全性。

二、拦截器配置(addInterceptors 方法)

@Override
public void addInterceptors(InterceptorRegistry registry) {
    // 注册拦截器(当前代码被注释,实际未生效)
//    registry.addInterceptor(loginInterceptor())  // 注册自定义的登录拦截器
//            .excludePathPatterns(  // 以下路径不拦截(直接放行)
//                    "/user/login",
//                    "/user/logout",
//                    "/wechat/loginByCode",
//                    "/wechat/reg/**"  // "/wechat/reg/" 下的所有子路径(如 /wechat/reg/step1)
//                )
//            .addPathPatterns("/**");  // 拦截所有其他路径
}

// @Bean
// public LoginInterceptor loginInterceptor() {
//     return new LoginInterceptor();
// }

作用
通过 登录拦截器LoginInterceptor)控制用户访问权限,流程如下:

  1. 注册拦截器:创建 LoginInterceptor 实例(@Bean 方法),并通过 registry.addInterceptor() 注册。
  2. 排除路径:以下路径无需登录即可访问:
    • /user/login:登录接口(否则会被拦截导致无法登录)。
    • /user/logout:登出接口。
    • 微信相关接口(/wechat/loginByCode/wechat/reg/**):可能用于第三方登录或注册,需公开访问。
  3. 拦截路径/** 表示除了上述排除路径外,所有其他请求都需要经过拦截器验证(如检查用户是否登录、是否有权限)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值