在我們的系統中,一個客戶端可能有多個運營商。但客戶有一個「願望」。 一家公司有一個賬戶,但是可以有多家運營商分配給這家公司。客戶希望我們準備一個解決方案,只有一家公司的運營商可以同時登錄系統。我怎樣才能做到這一點?允許在登錄時僅登錄一個用戶
回答
「我使用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. 只允許在用戶登錄
- 3. Json登錄多個用戶登錄在一個登錄頁面
- 4. 如果用戶存在,Firebase(AngularFire2)僅允許OAuth登錄
- 5. 允許root用戶登錄ftp
- 6. 允許Wordpress用戶多登錄
- 7. 不要允許用戶多次登錄
- 8. Facebook PHP SDK不允許登錄用戶
- 9. asp.net razor允許編輯頁面僅用於登錄用戶
- 10. Django:僅允許登錄用戶使用filefield
- 11. 一次只允許每個用戶一次登錄
- 12. 當用戶登錄來自前端時,Yii2登錄允許訪問後端
- 13. 如何僅允許登錄用戶查看圖像
- 14. 如何僅顯示Magento中允許登錄用戶的產品?
- 15. 如何僅允許登錄用戶提交表單?
- 16. 允許用戶每24小時登錄一次
- 17. 設計Confirmable允許登錄
- 18. 登錄只允許3 attemts
- 19. 只允許登錄網站的用戶的一個實例
- 20. ASP.NET MVC只允許一個登錄用戶
- 21. 允許用戶在會話超時後登錄JSF 2.0
- 22. Django:不允許用戶在未登錄時看到頁面
- 23. .htaccess登錄時允許文件類型
- 24. 發佈時不允許登錄
- 25. GitLab禁用正規的用戶名密碼登錄,只允許OmniAuth登錄
- 26. 允許用戶通過Google+登錄Spring Security應用程序登錄或OAuth 2.0
- 27. 允許用戶同時使用userename或電子郵件登錄
- 28. 僅在使用SSL進行登錄時使用SSL僅限於在登錄期間使用https登錄時
- 29. 僅過濾登錄用戶的記錄?
- 30. FB登錄限制,只允許特定用戶登錄您的網站使用fb登錄
你如何驗證?是否有數據庫參與?這是一個分佈式環境? – 2010-02-02 17:26:40
是的..爲了驗證的目的,數據庫涉及 – 2010-02-02 17:31:59