2010-09-25 19 views
2

我有一個擁有約10名成員的小型網站。其中5個現在被禁止。使所有表單身份驗證Cookie失效

我確保他們無法通過登錄頁面登錄。

但是因爲身份驗證cookie是永久性設置,如果他們回到他們仍然會在登錄該網站在幾個月後到期。

一個簡單的解決方案只是到期的所有身份驗證票證/餅乾。

如何做到這一點?

回答

2

如果你很高興與無效cookie的用戶然後你可以只重命名web.config中的窗體身份驗證cookie,像這樣:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" name=".ASPXAUTH2"/> 
</authentication> 

這將迫使所有用戶重新登錄在 - 然後您可以使用上述技術來確保您禁止的用戶不被允許登錄。

注意默認的cookie名稱是.ASPXAUTH。上面的代碼將其重命名爲.ASPXAUTH2。我可以用這種方法考慮的唯一問題是,如果您有一些代碼專門查找.ASPXAUTH cookie。

+0

如果將其重命名,會發生什麼情況?應用程序是否「記住」舊登錄名? – Viktor 2015-09-10 12:27:02

1

您可以在名爲IsBanned的數據庫中添加一個字段。當用戶被禁止IsBanned是真實的。如果IsBanned爲真,那麼您不允許用戶訪問該網站。

0

,因爲你正在使用窗體身份驗證您可以使用授權的web配置設置:

<system.web> 
    <authorization> 
     <deny users="user1,user2,user3"/> 
    </authorization> 
</system.web> 

,或者如果您使用的是角色提供商,你可以做

<system.web> 
    <authorization> 
     <deny roles="banned"/> 
    </authorization> 
</system.web> 
2

餅乾都是爲了認證不是授權。

維基百科

授權的過程有時會錯誤地認爲是相同的認證;許多廣泛採用的標準安全協議,強制性規定甚至法規都會造成這種錯誤。然而,認證是對主體提出的聲明進行驗證的過程,它應該被允許代表給定的委託人(人,計算機,流程等)行事。另一方面,授權涉及驗證經認證的主體有權執行某些操作或訪問特定資源。因此,身份驗證必須先於授權。

如果您使用的是Forms身份驗證,那麼Rob的答案就是要走的路。否則,你可能需要實現它手動

當然他們仍然可以被認定爲用戶(禁止,但用戶),但仍是shouln't被足夠多的讓他們進來。

由於azamsharp公佈。必須有一種方法可以告訴用戶來自數據庫中禁止的用戶,並且不允許他們登錄。

然後被禁止的用戶仍然可以進行身份​​驗證(在他們發送了正確的用戶和密碼之後)但未經過授權(在他們被檢測爲禁止之後)。