在我們的系統中,一個客戶端可能有多個運營商。但客戶有一個「願望」。 一家公司有一個賬戶,但是可以有多家運營商分配給這家公司。客戶希望我們準備一個解決方案,只有一家公司的運營商可以同時登錄系統。我怎樣才能做到這一點?允許在登錄時僅登錄一個用戶
回答
「我使用WPF應用程序和服務器用WCF,但是可以做到這一點。但是當用戶有一個應用程序打開並且處於非活動狀態30分鐘時,情況如何?「
該系統將是單用戶,所以我建議您在用戶登錄時啓動一個計數器線程。當計數器達到30分鐘,向db寫入一個值,表示用戶超時,其他用戶可以自由登錄。顯然,當用戶明確註銷時,你應該做同樣的事情。
一個計數器線程?這是相當浪費和**糟糕的設計** ....超時邏輯應該是服務器邏輯的一部分,而不是作爲一個線程 - 但作爲一個數據結構/錶行檢查需要保護的請求...如果這是erlang,並且你創建了一個計數器線程......那可能沒問題。 – 2010-02-03 11:08:21
我錯過了你的觀點...... 「但是作爲一個數據結構/表格行檢查需要保護的請求」......當然,這是顯而易見的,否則就沒有實用價值db表示用戶超時。但是,您認爲,檢查用戶是否超時的好方法是什麼?至少到現在爲止,我想不出另一種方式。 – 2010-02-03 11:37:18
請閱讀我答案中的文章 - 它將突出分佈式身份驗證的各個方面。 – 2010-02-03 15:28:56
您可以使用數據庫字段來標記它們已登錄。當它們這樣做時,將該字段更新爲「已登錄」,然後在它們註銷時將其更新爲「已註銷」。
如果用戶從來不打算明確註銷,您還需要監視登錄會話的過期時間以更新字段。
是的..我想這樣做,但我如何監視登錄會話? – 2010-02-02 17:31:22
只要確保他們的系統有能力驗證每個請求的登錄。任一
- 積極(通過查詢狀態 - 可能數據庫來比較一些祕密)或
- 被動 - 使用某種形式的加密和標記(可能在cookie)的。
選項一最簡單,選項2最快。如果您對每個請求進行驗證,您可以確保只有一個用戶保持登錄狀態 - 如果有其他用戶登錄,則可以使現有的活動登錄無效 - 可能需要n分鐘的冷卻時間。
你必須制定某種形式的登錄方案 - 的Kerberos是事實上的計劃 - 閱讀的Kerberos Designing an Authentication System: a Dialogue in Four Scenes這個易於遵循教程應該告訴你真的需要做什麼。
我用過的最好的辦法:
- 創建用於跟蹤操作員是否在(如用戶名和last_accessed_dt)
- 在由運營商更新的最後一個請求的每個頁面請求記錄表日期/時間
- 當操作員嘗試登錄時,他們只能在網站上的最後一次請求的數據/時間>會話超時時間段內(例如30分鐘)或者他們是最後一次操作員用戶ID時這樣做......他們可以快速恢復註銷等方式。
- Whe n以下的運營商註銷有上次訪問清除
- 當會話超時有上次訪問清除
我使用WPF應用程序和服務器寫入WCF,但是這可以實現。但是,當用戶打開一個應用程序並在30分鐘內不活動時,情況如何? – 2010-02-02 17:35:45
- 1. 僅限Facebook登錄按鈕(不允許新用戶登錄)
- 2. Json登錄多個用戶登錄在一個登錄頁面
- 3. 如果用戶存在,Firebase(AngularFire2)僅允許OAuth登錄
- 4. 允許root用戶登錄ftp
- 5. Facebook PHP SDK不允許登錄用戶
- 6. 允許Wordpress用戶多登錄
- 7. 當用戶登錄來自前端時,Yii2登錄允許訪問後端
- 8. 如何僅顯示Magento中允許登錄用戶的產品?
- 9. 如何僅允許登錄用戶查看圖像
- 10. 設計Confirmable允許登錄
- 11. 登錄只允許3 attemts
- 12. ASP.NET MVC只允許一個登錄用戶
- 13. 發佈時不允許登錄
- 14. GitLab禁用正規的用戶名密碼登錄,只允許OmniAuth登錄
- 15. 檢測,如果Facebook的用戶使用登錄按鈕允許或不允許登錄
- 16. jenkins不允許登錄,登錄頁面重新出現
- 17. 登錄頁面允許任何密碼登錄PHP
- 18. Zend_Auth:允許用戶登錄到多個表/身份
- 19. 平均堆棧 - 我如何允許API訪問僅限登錄(電子郵件/密碼和Facebook登錄)用戶
- 20. 將應用程序上傳到僅允許登錄的AppStore
- 21. 不允許不活躍的用戶在Laravel登錄
- 22. 用curl登錄dropbox(用戶登錄)
- 23. 登錄許多用戶使用一個用戶名和密碼
- 24. 天青#許多網站 - 一個登錄(單點登錄)
- 25. 我可以在使用openID時登錄用戶登錄
- 26. Android登錄活動僅在啓動時顯示Google登錄
- 27. 登錄 - 只允許3次嘗試
- 28. 春季安全只允許oauth登錄
- 29. 我應該允許多次登錄嗎?
- 30. 火力地堡不允許Facebook登錄
你如何驗證?是否有數據庫參與?這是一個分佈式環境? – 2010-02-02 17:26:40
是的..爲了驗證的目的,數據庫涉及 – 2010-02-02 17:31:59