前後端分離專案,使用session作為使用者狀態記錄
阿新 • • 發佈:2018-12-20
在使用前後端分離的專案中,我們一般選擇無狀態
的請求方式,即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。