我有一個擁有約10名成員的小型網站。其中5個現在被禁止。使所有表單身份驗證Cookie失效
我確保他們無法通過登錄頁面登錄。
但是因爲身份驗證cookie是永久性設置,如果他們回到他們仍然會在登錄該網站在幾個月後到期。
一個簡單的解決方案只是到期的所有身份驗證票證/餅乾。
如何做到這一點?
我有一個擁有約10名成員的小型網站。其中5個現在被禁止。使所有表單身份驗證Cookie失效
我確保他們無法通過登錄頁面登錄。
但是因爲身份驗證cookie是永久性設置,如果他們回到他們仍然會在登錄該網站在幾個月後到期。
一個簡單的解決方案只是到期的所有身份驗證票證/餅乾。
如何做到這一點?
如果你很高興與無效cookie的用戶然後你可以只重命名web.config中的窗體身份驗證cookie,像這樣:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" name=".ASPXAUTH2"/>
</authentication>
這將迫使所有用戶重新登錄在 - 然後您可以使用上述技術來確保您禁止的用戶不被允許登錄。
注意默認的cookie名稱是.ASPXAUTH。上面的代碼將其重命名爲.ASPXAUTH2。我可以用這種方法考慮的唯一問題是,如果您有一些代碼專門查找.ASPXAUTH cookie。
您可以在名爲IsBanned的數據庫中添加一個字段。當用戶被禁止IsBanned是真實的。如果IsBanned爲真,那麼您不允許用戶訪問該網站。
,因爲你正在使用窗體身份驗證您可以使用授權的web配置設置:
<system.web>
<authorization>
<deny users="user1,user2,user3"/>
</authorization>
</system.web>
,或者如果您使用的是角色提供商,你可以做
<system.web>
<authorization>
<deny roles="banned"/>
</authorization>
</system.web>
餅乾都是爲了認證不是授權。
維基百科
授權的過程有時會錯誤地認爲是相同的認證;許多廣泛採用的標準安全協議,強制性規定甚至法規都會造成這種錯誤。然而,認證是對主體提出的聲明進行驗證的過程,它應該被允許代表給定的委託人(人,計算機,流程等)行事。另一方面,授權涉及驗證經認證的主體有權執行某些操作或訪問特定資源。因此,身份驗證必須先於授權。
如果您使用的是Forms身份驗證,那麼Rob的答案就是要走的路。否則,你可能需要實現它手動
當然他們仍然可以被認定爲用戶(禁止,但用戶),但仍是shouln't被足夠多的讓他們進來。
由於azamsharp公佈。必須有一種方法可以告訴用戶來自數據庫中禁止的用戶,並且不允許他們登錄。
然後被禁止的用戶仍然可以進行身份驗證(在他們發送了正確的用戶和密碼之後)但未經過授權(在他們被檢測爲禁止之後)。
如果將其重命名,會發生什麼情況?應用程序是否「記住」舊登錄名? – Viktor 2015-09-10 12:27:02