| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package com.qnfhq.config;
- import cn.dev33.satoken.context.SaHolder;
- import cn.dev33.satoken.filter.SaServletFilter;
- import cn.dev33.satoken.router.SaRouter;
- import cn.dev33.satoken.stp.StpUtil;
- import cn.dev33.satoken.util.SaResult;
- import com.qnfhq.common.exception.ErrorCode;
- import com.qnfhq.common.redis.RedisUtils;
- import jakarta.annotation.Resource;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- /**
- * [Sa-Token 权限认证] 配置类
- */
- @Slf4j
- @Configuration
- public class SaTokenConfigure {
- @Resource
- RedisUtils redisUtils;
- /**
- * 注册 [Sa-Token全局过滤器]
- */
- @Bean
- public SaServletFilter getSaServletFilter() {
- log.info("---------- Sa-Token 配置 in getSaServletFilter----------");
- return new SaServletFilter()
- // 指定 拦截路由 与 放行路由
- .addInclude("/**")
- .addExclude(
- "/api/user/register",
- "/api/user/login",
- "/api/user/captcha",
- "/api/user/checkCaptcha",
- "/api/user/sendEmailCode",
- "/api/user/sendMobileCode",
- "/api/user/resetPwdPhone",
- "/api/user/resetPwdEmail",
- "/api/user/checkPhoneCode",
- "/api/user/checkEmailCode"
- // "/api/coin/list",
- // "/api/user/bindPhoneEmail",
- // "/api/timezone/getTimeZone",
- // "/ws/**",
- // "/api/recall/withdraw/unc",
- // "/api/recall/pay/unc",
- // "/api/advert/list",
- // "/api/helpcenter/**",
- // "/api/helpCenterInfo/**",
- // "/api/blockcc/ageeTrade",
- // "/api/ekyc/**", // 实名认证 - 认证返回函数
- // "/api/external/**"
- )
- // 认证函数: 每次请求执行
- .setAuth(obj -> {
- log.info("---------- 进入Sa-Token认证函数 ----------");
- if (StpUtil.isLogin() == false) {
- log.info("---------- 进入Sa-Token认证函数 未登陆----------");
- SaRouter.back(new SaResult(ErrorCode.UNAUTHORIZED, "error", (Object) null));
- } else {
- log.info("---------- 进入Sa-Token认证函数 已登陆----------");
- long userId = StpUtil.getLoginIdAsLong();
- redisUtils.get("active:UserId:" + userId,2*60*60);
- }
- })
- // 异常处理函数:每次认证函数发生异常时执行此函数
- .setError(e -> {
- log.info("---------- 进入Sa-Token异常处理 ----------"+e.getMessage());
- // System.out.println("---------- 进入Sa-Token异常处理 -----------");
- return SaResult.error(e.getMessage());
- })
- .setBeforeAuth(r -> {
- // ---------- 设置一些安全响应头 ----------
- SaHolder.getResponse()
- // 服务器名称
- .setServer("assa")
- // 是否可以在iframe显示视图: DENY=不可以 | SAMEORIGIN=同域下可以 | ALLOW-FROM uri=指定域名下可以
- .setHeader("X-Frame-Options", "SAMEORIGIN")
- // 是否启用浏览器默认XSS防护: 0=禁用 | 1=启用 | 1; mode=block 启用, 并在检查到XSS攻击时,停止渲染页面
- .setHeader("X-XSS-Protection", "1; mode=block")
- // 禁用浏览器内容嗅探
- .setHeader("X-Content-Type-Options", "nosniff");
- })
- ;
- }
- }
|