簡體   English   中英

angularjs 客戶端和 spring 后端用戶登錄和會話管理

[英]angularjs client and spring backend user login and session management

我有一個用 angularjs 編寫的移動網站,我的后端在 Spring Boot 中。 現在,我有自己的登錄頁面,可以毫無困難地登錄用戶。 但是,如果用戶單擊“返回”、“刷新”等,客戶端將丟失用戶的 id 和登錄信息(在登錄時從服務器獲得)。 我需要確保維護此信息,並且單擊“返回”或“刷新”不會破壞所有內容。

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

任何幫助將不勝感激!

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

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

你有很多方法可以解決這個限制:

  1. 在應用程序引導后執行 http 請求(查看angular.module().run方法
  2. 保存一個cookie,使用服務端通過json直接在dom上打印初始數據層
  3. 節省本地/會話存儲

就個人而言,我更喜歡 cookie,因為它可以讓服務器與客戶端分離工作。

參考您的評論...... “如果用戶點擊“返回”、“刷新”等,客戶端將丟失用戶的 ID 和登錄信息(在登錄時從服務器獲取)。

驗證成功后是否有任何理由需要維護用戶 ID 或登錄信息?

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

請查看此示例,了解如何完成此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM