场景:
把使用JWT生成的token直接通过java来设置返回头set-cookie来设置cookie,从而前端每次请求头都会自动携带cookie,然后我们可以获取cookie上的token来判断当前用户是否登录来实现控制部分接口只有用户登录之后才能访问的需求。
工作常用携带token方式:
- 登录接口返回对应的token,前端存储在sessionStroge上,然后通过请求拦截器,当前端每次发起请求的时候就会被前端设置的请求拦截器所监听到,因此在对应的请求头上设置对应的token即可。
封装CookieUtils
cookieUtils.java:
package com.blog.utils;
import com.auth0.jwt.interfaces.Claim;
import org.springframework.beans.factory.annotation.Autowired;
import tk.mybatis.mapper.util.StringUtil;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
public class CookieUtils {
/**
* 设置token
*/
public static void setCookie(HttpServletResponse response,String token) {
Cookie cookie = new Cookie("token",token);
cookie.setHttpOnly(true);//禁止用户更改cookie
cookie.setPath("/");//设置携带cookie的路径
// cookie.setDomain("localhost");
response.addCookie(cookie);//响应头set-cookie
}
/**
* 获取token
*/
public static String getCookie(HttpServletRequest request, String key) {
if(request == null || StringUtil.isEmpty(key)) {
return "";
}
Cookie[] cookies = request.getCookies();
if(cookies == null || cookies.length <= 0) return "";
for (Cookie cookie : cookies) {
if(key.equals(cookie.getName())){
return cookie.getValue();
}
}
return "";
}
}
使用
CookieUtils.setCookie(response,token);//在登录成功的时候进行设置cookie
String token = CookieUtils.getCookie(request,"token");//对需要登录操作的接口进行获取操作