• 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. }

  • 相关阅读:
    云安全—Dashboard 攻击面
    计算机网络复习大纲
    恒太照明在北交所上市:募资规模缩水三成,第三季度收入下滑
    Webfunny前端监控如何接入飞书单点登录(SSO)
    数据结构和算法——睡眠排序
    基于Java实现的仓库管理系统设计与实现(源码+lw+部署文档+讲解等)
    10个优秀的Python库,实用且有趣
    Java高级编程技术详解:从多线程到算法优化的全面指南
    抽象工厂设计模式是什么?什么是 Abstract Factory 抽象工厂设计模式?Python 抽象工厂设计模式示例代码
    Android13 按键kl文件优先级详解
  • 原文地址:https://blog.csdn.net/heming20122012/article/details/139504752