• spring框架限制接口是否要登录过才能访问


    1、引入spring 、spring boot依赖,这部分不再多说,正常开发spring boot项目就可以。

    2、定义类,实现WebMvcConfigurer接口

    1. package com.hmblogs.config;
    2. import com.hmblogs.config.web.interceptor.PortalTokenInterceptor;
    3. import org.springframework.context.annotation.Configuration;
    4. import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
    5. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    6. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    7. @Configuration
    8. public class InterceptorConfig implements WebMvcConfigurer {
    9. @Override
    10. public void addInterceptors(InterceptorRegistry registry) {
    11. PortalTokenInterceptor tokenInterceptor = (PortalTokenInterceptor) SpringFactory.getBean("portalTokenInterceptor");
    12. InterceptorRegistration tokenRegistration = registry.addInterceptor(tokenInterceptor);
    13. tokenRegistration.addPathPatterns("/**");
    14. tokenRegistration.excludePathPatterns("/swagger-ui.html")
    15. .excludePathPatterns("/doc.html")
    16. .excludePathPatterns("/swagger-ui.html/**")
    17. .excludePathPatterns("/swagger**")
    18. .excludePathPatterns("/**/swagger**")
    19. .excludePathPatterns("/configuration/ui")
    20. .excludePathPatterns("/**/configuration/ui")
    21. .excludePathPatterns("/swagger-resources")
    22. .excludePathPatterns("/**/swagger-resources")
    23. .excludePathPatterns("/configuration/security")
    24. .excludePathPatterns("/**/configuration/security")
    25. .excludePathPatterns("/v2/api-docs")
    26. .excludePathPatterns("/error")
    27. .excludePathPatterns("/webjars/**")
    28. .excludePathPatterns("/**/favicon.ico")
    29. .excludePathPatterns("/login/**")
    30. .excludePathPatterns("/v3/secStaff/checkUserExistByEmail")
    31. .excludePathPatterns("/v3/secStaff/register")
    32. .excludePathPatterns("/v3/secStaff/sendVerifyCode")
    33. .excludePathPatterns("/v3/secStaff/checkEmail")
    34. .excludePathPatterns("/v3/secStaff/checkPhone")
    35. .excludePathPatterns("/v3/secStaff/checkVerifyCode")
    36. ;
    37. }
    38. }

    3、定义拦截器,实现HandlerInterceptor接口

    1. package com.blogs.config.web.interceptor;
    2. import cn.hutool.core.date.DateTime;
    3. import cn.hutool.core.date.DateUnit;
    4. import cn.hutool.core.date.DateUtil;
    5. import cn.hutool.http.HttpStatus;
    6. import cn.hutool.json.JSONUtil;
    7. import com.alibaba.fastjson.JSON;
    8. import liquibase.util.MD5Util;
    9. import lombok.extern.slf4j.Slf4j;
    10. import org.springframework.beans.factory.annotation.Autowired;
    11. import org.springframework.stereotype.Component;
    12. import org.springframework.web.servlet.HandlerInterceptor;
    13. import org.springframework.web.servlet.ModelAndView;
    14. import javax.servlet.http.HttpServletRequest;
    15. import javax.servlet.http.HttpServletResponse;
    16. import java.time.Duration;
    17. import java.util.Date;
    18. import java.util.HashMap;
    19. import java.util.List;
    20. import java.util.Map;
    21. import java.util.stream.Collectors;
    22. @Slf4j
    23. @Component
    24. public class PortalTokenInterceptor implements HandlerInterceptor {
    25. @Autowired
    26. private RedisService redisService;
    27. @Override
    28. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    29. throws Exception {
    30. //获取token
    31. String token = request.getHeader("Authoritarian");
    32. log.info("-----------token:" + token);
    33. //token为空,则返回401
    34. if(StringUtils.isEmpty(token)) {
    35. response.setStatus(HttpStatus.HTTP_UNAUTHORIZED);
    36. response.setContentType("application/json");
    37. response.setCharacterEncoding("utf-8");
    38. response.getWriter().print(JSONUtil.toJsonStr(RestResponse.failed(ResultCode.UN_AUTHORIZED, "认证失败")));
    39. return false;
    40. }
    41. return true;
    42. }
    43. @Override
    44. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
    45. ModelAndView modelAndView) throws Exception {
    46. }
    47. @Override
    48. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
    49. throws Exception {
    50. }
    51. }

  • 相关阅读:
    2023年DDoS攻击发展趋势的分析和推断
    651页23万字智慧教育大数据信息化顶层设计及智慧应用建设方案
    04-Apache Directory Studio下载安装(LDAP连接工具)
    rman导入时reading的路径与注册备份集的路径不一致
    STK12与Python联合仿真(二):简单的例程
    智慧幼儿园信息管理系统的设计与实现
    Zepoch 销量即将突破800个,生态发展信心十足
    【LeetCode每日一题】【单调队列】2022-10-26 862. 和至少为K的最短子数组 Java实现
    Win10怎么打开管理员命令提示符窗口
    Godot 脚本外置参数设置
  • 原文地址:https://blog.csdn.net/heming20122012/article/details/139504752