SpringBoot 定义登陆拦截器

web 项目要有登陆,如果没有登陆就访问主界面,需要拦截,并返回登录界面,下面是定义拦截器的方法:
首先创建一个 interceptor 包,定义登录拦截器,
在这里插入图片描述
需要实现 HandlerInterceptor 接口,然后重写 preHandle 方法:

package com.example.practice_0818.interceptor;

import com.example.practice_0818.util.JwtUtil;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @Classname LoginInterceptior
 * @Description 登录拦截器
 * @Date 2021/8/18 11:07
 * @Created by thx
 */
public class LoginInterceptor implements HandlerInterceptor {
    /**
    * @author thx
    * @description 重写拦截器,在访问 mvc 的时候先进入
    * @yyds: thx yyds
    * @date 2021/8/18 11:09
    */

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("进入拦截区");
        /**
        * @author thx
        * @description 判断是否登录过
        * @yyds: thx yyds
        * @date 2021/8/18 11:24
        */
        //请求头的内容
        String token = request.getHeader("token");
        if (JwtUtil.getUser(token) == null) return false;
        return true;
    }
}

同时还要定义一个 config 类,自定义拦截器:
在这里插入图片描述

package com.example.practice_0818.config;

import com.example.practice_0818.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Classname WebConfigMvc
 * @Description Mvc 配置类
 * @Date 2021/8/18 11:09
 * @Created by thx
 */

@Configuration
@Component
public class WebConfigMvc implements WebMvcConfigurer {
    /**
    * @author thx
    * @description 自定义拦截器
    * @yyds: thx yyds
    * @date 2021/8/18 11:10
    */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor())
//                拦截所有路径
                .addPathPatterns("/**")
//                下面的不拦截
                .excludePathPatterns("/user/login/**");
//        .excludePathPatterns("/login/**", "/images/**","/js/**");
    }
    @Bean
    public LoginInterceptor loginInterceptor(){
        return new LoginInterceptor();
    }
}

前端返回 token 对象

@RequestMapping("login")
    public String login(String userName, String password) {

        ResultInfo<User> resultInfo = userService.userLogin(userName, password);
        String token = "";
        if (resultInfo.getCode() == 200) {
            token = JwtUtil.generateToken(resultInfo.getResult());
        }
        return token;
    }

拿到令牌以后,在 postMan 测试,放入请求头中,完成登陆拦截器
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_努力努力再努力_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值