WebConfig的登录与放行

文件作用

  • 整体定位: 这是 Spring MVC 的全局 Web 配置类,继承 WebMvcConfigurationSupport,用于统一配置静态资源映射、拦截器链以及字符编码过滤器等。
  • 主要内容:
    • addResourceHandlers:配置静态资源与 Swagger 相关资源的访问路径与缓存策略。
    • @Bean:注册三个拦截器 Bean(CommandInterceptorAdminUserInterceptorClientUserInterceptor)和 CharacterEncodingFilter
    • addInterceptors:将上述拦截器加入到 Spring MVC 的拦截器链,对不同 URL 前缀进行权限或登录校验。

63-99 行详解(拦截器 URL 规则)

        // 后台拦截
        registry.addInterceptor(adminUserInterceptor())
                .addPathPatterns("/backendApi/**")
                .excludePathPatterns("/clientApi/captcha/**")
                .excludePathPatterns("/backendApi/captcha/**")
                .excludePathPatterns("/backendApi/userCoupon/exportList")
                .excludePathPatterns("/backendApi/order/export")
                .excludePathPatterns("/backendApi/goods/goods/downloadTemplate")
                .excludePathPatterns("/backendApi/member/downloadTemplate")
                .excludePathPatterns("/backendApi/login/**");

        // 客户端拦截
        registry.addInterceptor(portalUserInterceptor())
                .addPathPatterns("/clientApi/**")
                .excludePathPatterns("/clientApi/sign/**")
                .excludePathPatterns("/clientApi/page/home")
                .excludePathPatterns("/clientApi/captcha/**")
                .excludePathPatterns("/clientApi/goodsApi/**")
                .excludePathPatterns("/clientApi/coupon/list")
                .excludePathPatterns("/clientApi/coupon/detail")
                .excludePathPatterns("/clientApi/cart/**")
                .excludePathPatterns("/clientApi/user/**")
                .excludePathPatterns("/clientApi/settlement/submit")
                .excludePathPatterns("/clientApi/pay/doPay")
                .excludePathPatterns("/clientApi/pay/weixinCallback")
                .excludePathPatterns("/clientApi/pay/weixinRefundNotify")
                .excludePathPatterns("/clientApi/pay/aliPayCallback")
                .excludePathPatterns("/clientApi/order/todoCounts")
                .excludePathPatterns("/clientApi/store/**")
                .excludePathPatterns("/clientApi/article/**")
                .excludePathPatterns("/clientApi/message/getOne")
                .excludePathPatterns("/clientApi/message/wxPush")
                .excludePathPatterns("/clientApi/sms/sendVerifyCode")
                .excludePathPatterns("/clientApi/book/list")
                .excludePathPatterns("/clientApi/book/detail")
                .excludePathPatterns("/clientApi/book/cateList");
  • 后台拦截(AdminUserInterceptor

    • 生效范围: "/backendApi/**"(所有后台接口默认需要管理员拦截/鉴权)。
    • 放行路径:
      • "/backendApi/login/**":后台登录相关必须不经鉴权。
      • "/backendApi/captcha/**""/clientApi/captcha/**":验证码类接口公开访问。
      • 导出/模板下载类接口:/backendApi/userCoupon/exportList/backendApi/order/export/backendApi/goods/goods/downloadTemplate/backendApi/member/downloadTemplate 通常用于工具/下载,允许在无会话或特殊场景下访问(便于外部触发或前端直接下载)。
  • 客户端拦截(ClientUserInterceptor

    • 生效范围: "/clientApi/**"(客户端接口默认需要登录/鉴权)。
    • 放行路径(典型“游客可用/必须公开”的业务接口):
      • 认证/入口类:/clientApi/sign/**(注册/登录等)、/clientApi/page/home(首页)、/clientApi/captcha/**(验证码)。
      • 商品/内容浏览:/clientApi/goodsApi/**/clientApi/coupon/list/clientApi/coupon/detail/clientApi/store/**/clientApi/article/**/clientApi/book/list|detail|cateList
      • 购物流程中的公开/半公开:/clientApi/cart/**(购物车)、/clientApi/settlement/submit(提交结算,通常需要服务端内部校验单独处理)、/clientApi/order/todoCounts(待办数量,可能用于引导展示)。
      • 支付相关(第三方回调/前置发起需公开):/clientApi/pay/doPay/clientApi/pay/weixinCallback/clientApi/pay/weixinRefundNotify/clientApi/pay/aliPayCallback
      • 用户与消息(此处放行整个 /clientApi/user/**,说明该模块内部可能再细分鉴权或仅包含注册找回等公开接口):/clientApi/user/**/clientApi/message/getOne/clientApi/message/wxPush
      • 短信:/clientApi/sms/sendVerifyCode(发送验证码必须公开)。
  • 整体机制说明:

    • addPathPatterns 设定基础拦截范围,excludePathPatterns 列出无需拦截的白名单。
    • 这些规则确保“需要登录/权限”的接口被拦截,而“登录前可访问、第三方回调、下载/导出、内容浏览”等场景被放行,平衡安全与可用性。
  • 注意点:

    • WebMvcConfigurationSupport 会覆盖 Spring Boot 的默认 MVC 自动配置,已在 addResourceHandlers 中手动补齐静态资源映射,避免静态资源404。
    • /clientApi/user/** 整体放行较为宽松,需确认对应控制器内部是否再做细粒度鉴权,以免暴露敏感接口。
  • 我将先给出高层说明,再逐项解读 63-99 行的拦截与放行规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值