• 基于SpringBoot+vue的token验证


    后端:

    1,写一个验证token的拦截器

    1. import com.fasterxml.jackson.databind.ObjectMapper;
    2. import com.ffyc.news.model.CommonData;
    3. import org.springframework.web.servlet.HandlerInterceptor;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import java.io.PrintWriter;
    7. public class AdminTokenInterceptor implements HandlerInterceptor {
    8. @Override
    9. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    10. String adminToken= request.getHeader("adminToken");
    11. boolean ans=JWTUtil.verify(adminToken);
    12. if(!ans){
    13. PrintWriter printWriter=response.getWriter();
    14. CommonData commonData=new CommonData(402,"Token验证失效,请重新登录!");
    15. String json=new ObjectMapper().writeValueAsString(commonData);
    16. printWriter.write(json);
    17. printWriter.close();
    18. }
    19. return ans;
    20. }
    21. }

    2,配置拦截器

    1. import com.ffyc.news.util.AdminTokenInterceptor;
    2. import org.springframework.context.annotation.Configuration;
    3. import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
    4. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    5. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    6. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    7. @Configuration
    8. public class WebConfig implements WebMvcConfigurer {
    9. @Override
    10. public void addInterceptors(InterceptorRegistry registry) {
    11. InterceptorRegistration interceptorRegistration=registry.addInterceptor(new AdminTokenInterceptor());
    12. interceptorRegistration.addPathPatterns("/admin/**");
    13. interceptorRegistration.excludePathPatterns("/admin/login/login");
    14. }
    15. // @Override
    16. // public void addResourceHandlers(ResourceHandlerRegistry registry) {
    17. //
    18. // }
    19. }

    前端:

    1,axios响应拦截

    1. //axios 请求拦截 每次向后端发送
    2. axios.interceptors.request.use(config => {
    3. //为请求头对象,添加 Token 验证的 token 字段
    4. config.headers.adminToken = window.sessionStorage.getItem('adminToken');
    5. return config;
    6. })
    7. axios.interceptors.response.use((resp) => { //正常响应拦截
    8. if (resp.data.code == 500) {
    9. ElementUI.Message({
    10. message: resp.data.message,
    11. type: "error"
    12. })
    13. }
    14. if (resp.data.code == 402) {
    15. ElementUI.Message({
    16. message: resp.data.message,
    17. type: "error"
    18. })
    19. router.replace("/login");
    20. }
    21. return resp;
    22. });

     

  • 相关阅读:
    Linux磁盘暴涨如何解决?
    【OI学习笔记】线性代数-高斯消元法
    基于SSM的美食推荐管理系统
    realityOS会是苹果的新操作系统吗?
    PHP代码审计10—命令执行漏洞
    猿创征文|Camunda工作流
    备战数学建模42-缺失值和异常值的处理方法(攻坚战6)
    hive acid及事务表踩坑学习实录
    CSRF跨站请求伪造漏洞分析
    MySQL EXPLAIN查看执行计划
  • 原文地址:https://blog.csdn.net/m0_71385141/article/details/134540138