項目登錄流程如下
用戶進入前端登錄界面,輸入賬號密碼等,輸入完成之后前端發送請求到后端(攔截器不會攔截登錄請求),后端驗證賬號密碼等成功之后生成Token並存儲到數據庫,數據庫中包含該Token過期時間,然后返回生成的Token到前端。
前端收到Token,表示登錄成功,把這個Token存儲到瀏覽器Cookie中。然后跳轉到用戶中心頁面,用戶中心頁面從瀏覽器Cookie中扣出Token,跟隨請求用戶數據接口一起帶到后端。
后端通過攔截器攔截到這個請求,去判斷這個Token是否有效,有效就放過去做他該做的事情,無效就拋出異常。
跨域配置
先說一下這個前后分離的項目,已經配置過跨域這些問題。我這里后端配置的方式如下:
前端每次發送請求也都有在ajax里面設置xhrFields:{withCredentials: true}屬性。
攔截器代碼
問題
現在的情況是,如果Token正常就沒問題,如果Token失效了,前端發送的請求就會提示跨域問題,可是該項目已經配置過跨域問題了。既然又提示跨域問題,那我們修改代碼如下:
這樣修改之后,如果Token無效,前端發送的請求就不會提示跨域問題。而且也可以在ajax的success方法中根據錯誤碼(601/602)做不同的判斷,代碼如下:
下面附上上面代碼中的XjxccException類: