簡體   English   中英

結合使用cookie和會話來保持用戶登錄是否是一個好主意

[英]Is it a good idea to use a combination of cookies and sessions for keeping users logged in

我正在尋找一種設置選項來保持用戶登錄的可能性。現在,我了解到可以使用會話來允許用戶瀏覽而無需在每個頁面上重新輸入登錄信息,直到關閉瀏覽器並關閉會話為止。迷路了。 Cookie將存儲在客戶端,並具有持續時間,直到它過期或用戶刪除該Cookie。

我當時想我可以將兩者結合使用

  1. 創建數據庫表(id,user_id,cookie_token,is_active)
  2. 用戶登錄將在db表中創建一個行,該行將用戶連接到cookie_token,該cookie_token也存儲在客戶端瀏覽器(系統)上。

    • 每次創建令牌時,檢查創建令牌的用戶是否在系統中已經有任何活動的令牌,並在創建新令牌之前將其設置為非活動。
    • 每個用戶只能激活一個令牌

因此,每次用戶訪問該站點時,系統都會查找該令牌並檢查is_active字段。如果找到了user_token且is_active = 1或true,則將檢索用戶數據(id,name等),然后創建會話和會話變量。

我找不到結合使用這兩種方法的任何問題或答案,所以這可能只是一個矯kill過正或一個非常糟糕的主意,我剛剛開始閱讀會議和Cookie,並一直在嘗試找出一個系統我可以實現自己,所以很高興知道這是好是壞。

我無法再作為評論回復,因為我的回復太長了……我已經實現了以下內容。 不幸的是,我記不清了,但是它會給你一個很好的主意:

手動登錄前先訪問:

  • 開始會議。
  • 成功登錄后,將用戶標識存儲到此會話中,並將令牌值存儲到dB和cookie中。

下次瀏覽器訪問頁面時:

  • (重新)開始會話。
  • 檢查是否在此會話中設置了用戶標識。
    • 如果是這樣,請自動登錄與該標識匹配的用戶。
    • 如果不是(會話由於時間限制或瀏覽器關閉而過期),請檢查令牌值是否存儲在cookie中,並且該值是否與以dB為單位存儲的令牌值匹配。
      • 如果找到(未過期)匹配項,則自動登錄用戶並刪除舊令牌。
      • 如果用戶標識無效並且令牌值無效/過期:
        • 注銷用戶(其中​​包含所有返回“公共”模式的操作,例如銷毀會話,刪除令牌,Cookie等)。

暫無
暫無

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

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