SpringBoot用戶登錄攔截器實現


1、實現接口:HandlerInterceptor,重寫 preHandle方法。

import com.google.gson.Gson;
import io.jsonwebtoken.Claims;
import net.xdclass.xdvidio.domain.JsonData;
import net.xdclass.xdvidio.utils.JwtUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
* @Author Pandas
* @Date 2020/4/10 23:22
* @Version 1.0
* @Description 描述這個類是做什么的
*/
public class LoginInterceoter implements HandlerInterceptor {

private static final Gson gson=new Gson();
/**
* 進入controller之前進行攔截
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

String token =request.getHeader("token");
if(token==null){
token=request.getParameter("token");
}
if(token!=null){//解密
Claims claims= JwtUtils.checkJWT(token);
Integer userId=(Integer) claims.get("id");
String name=(String)claims.get("name");

request.setAttribute("user_id",userId);
request.setAttribute("name",name);

return true;
}
sendJsonMessage(response, JsonData.buildError("請登錄"));
return false;
}

/**
* 響應數據給前端
* @param response
* @param object
*/
public static void sendJsonMessage(HttpServletResponse response,Object object)throws IOException{
response.setContentType("application/json;charset=utf-8");

PrintWriter writer=response.getWriter();
writer.print(gson.toJson(object));
writer.close();
response.flushBuffer();
}
}

2、配置攔截器

import net.xdclass.xdvidio.interceoter.LoginInterceoter;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Author Pandas
 * @Date 2020/4/10 23:42
 * @Version 1.0
 * @Description 攔截器配置類
 */
@Configuration
public class IntercepterConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceoter()).addPathPatterns("/user/api/v1/*/**");
        WebMvcConfigurer.super.addInterceptors(registry);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM