前后端分离项目,使用session作为用户状态记录

在使用前后端分离的项目中,我们一般选择无状态的请求方式,即web token;或者搭建缓存服务器,来准们存储用户的登录状态。一般不会使用servlet的session来存储用户状态,因为这种方式不太安全,而且前后端分离的项目中每次访问的时候,所携带的sessionId也是不相同的,所以是无法使用session的。

虽然session没有其他的实现方式安全,但是我们能不能使用session存储token存储呢?答案是肯定的,无论是什么样的东西,都会有他的解决方案。下面我们以spring的配置方法为例,配置spring的拦截器如下:

public class LogInterceptor implements HandlerInterceptor {
	@Override
public boolean preHandle(HttpServletRequest request,
		HttpServletResponse response, Object object) throws Exception {
		
	response.setCharacterEncoding("UTF-8");
	response.setContentType("application/json; charset=utf-8");
	response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
	response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
	response.setHeader("Access-Control-Allow-Credentials","true");
	return true;
	}
}

重点:

response.setHeader("Access-Control-Allow-Credentials","true"); 这是重点
response.setHeader("Access-Control-Allow-Origin", "*"); 这里不能写成("*")

配置了这个内容之后,我们在前端项目中访问接口时,每次携带的sessionId就会相同,这样就可以每次取到相同的session。

你可能感兴趣的:(java,web技术)