1. 程式人生 > >前後端分離專案,使用session作為使用者狀態記錄

前後端分離專案,使用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。