-2

我有一個手寫網站用angularjs編寫,我的後端在Spring Boot中。現在,我擁有自己的登錄頁面,並且可以毫無困難地登錄用戶。但是,如果用戶點擊「返回」,「刷新」等,則客戶端丟失用戶的ID和登錄信息(在登錄時從服務器獲得)。我需要確保這些信息得到維護,點擊「返回」或「刷新」不會破壞所有內容。angularjs客戶端和春季後端用戶登錄和會話管理

其次,知道登錄後的url的用戶可以在瀏覽器中輸入這些url並在不登錄的情況下訪問它們。我可以阻止他們訪問服務器上的任何內容,但不知道我可以在客戶端上做什麼來重定向他們在這種情況下登錄頁面。

任何幫助將不勝感激!

回答

0

您應該記住,瀏覽器中運行的所有內容都是stateless,因此無法保留之前狀態的跟蹤。

現在,如果用戶執行刷新(或其他類似操作),Angular會丟失所有內容(包括AuthData)。

你有很多辦法繞過這個限制:

  1. 執行應用引導後的HTTP請求(有一個看看angular.module().run方法
  2. 保存一個cookie,並使用服務器打印初始數據通過JSON直接在DOM層
  3. 保存在本地/會話存儲

就個人而言,我更喜歡餅乾,因爲這可以讓服務器工作decou從客戶端出來。

+0

對於cookie,會否存在關於瀏覽器是否允許cookie的問題?如果是的話,我怎麼能克服它們? –

+0

如果瀏覽器(表示用戶)不允許使用cookie,則不能使用cookie ...只需始終顯示登錄表單。 – Hitmands

0

參照您的評論... 「如果用戶點擊」返回「,」刷新「等,客戶端會丟失用戶的ID和登錄信息(在登錄時從服務器獲得)。

是否有任何理由在成功驗證後需要維護用戶標識或登錄信息?

如果將Spring Security設置爲基本身份驗證,則在成功登錄後,會將Session Cookie發送回客戶端的響應。在對服務器的所有後續請求中,將在請求上發送相同的會話Cookie,並重新建立之前通過身份驗證的會話。您只需確保您的Angular客戶端在發出請求時傳遞cookie。

看看這個sample如何做到這一點。

+0

是的,我需要維護他們的用戶ID,因爲它是用於後續請求到服務器(這是一個聊天應用程序)的標識符。 –