在我的Web應用程序中,我使用完全自定義的功能來登錄。因此,Web.Security完全沒有。
我使用Session和ViewState變量來控制所有內容。 要從應用程序註銷,我使用Session.Abandon()
命令。當不使用內置的成員身份功能時,使用FormsAuthentication.SignOut是否有意義
我想知道我是否也應該調用FormsAuthentication.SignOut()?我看了一下這個方法的官方文檔,但沒有完全理解它。我從中獲得什麼好處?
在我的Web應用程序中,我使用完全自定義的功能來登錄。因此,Web.Security完全沒有。
我使用Session和ViewState變量來控制所有內容。 要從應用程序註銷,我使用Session.Abandon()
命令。當不使用內置的成員身份功能時,使用FormsAuthentication.SignOut是否有意義
我想知道我是否也應該調用FormsAuthentication.SignOut()?我看了一下這個方法的官方文檔,但沒有完全理解它。我從中獲得什麼好處?
如果你還在使用窗體身份驗證(即使你不使用內置的ASP.NET成員資格提供),然後是你應該叫SignOut
因爲它將擺脫身份驗證cookie。
但是,如果你甚至根本沒有使用表單認證,那麼就沒有認證cookie,所以調用它沒有意義。
您可以使用Membership provider
爲了減少管理安全需要的開發時間(Identity)
。
也tool regsql
必須按順序安裝youur數據庫爲你的用戶,你也RoleManager functionality
用於管理用戶(Principal)
一些鏈接的Roles
:
http://msdn.microsoft.com/fr-fr/library/ms229862(v=vs.80).aspx
你並不需要使用
FormsAuthentication.SignOut();
如果你不是usin g形式認證。
這裏是一個很好的鏈接
FormsAuthentication.SignOut() does not log the user out
我不得不承認官方文件有很多要說的SignOut
。備註部分包含許多有趣的信息。
如果Cookies支持爲false,SignOut方法將從Cookie或URL中刪除表單身份驗證票證信息。您可以使用SignOut方法與RedirectToLoginPage方法一起登錄一個用戶並允許其他用戶登錄。 如果您以無cookie模式運行,或者您同時支持經過身份驗證的用戶和匿名用戶,則應明確控制如果由於刪除匿名標識符而需要執行特殊業務邏輯,則重定向到登錄頁面。 調用SignOut方法時,通過調用Redirect方法並將endResponse參數設置爲false,可以重定向到應用程序的登錄頁面。直到當前頁面執行完成纔會發生重定向,因此可以運行其他代碼。如果代碼不包含明確的重定向到另一個網頁,將用戶重定向到應用程序的配置文件中配置登錄頁面。
調用SignOut方法只會刪除表單身份驗證Cookie。 Web服務器不存儲有效和過期的身份驗證票據以供以後比較。如果惡意用戶獲得有效的表單身份驗證cookie,這會使您的站點容易受到重播攻擊。由SlidingExpiration屬性設置爲false窗體身份驗證cookie
- 使用絕對過期:要使用窗體身份驗證cookie時提高安全性,你應該做到以下幾點。這限制了被劫持的cookie可以被重播的窗口。
- 只能通過安全套接字層(SSL)發出並接受身份驗證Cookie,方法是將RequireSSL屬性設置爲true並通過在SSL下運行整個網站。將RequireSSL屬性設置爲true可確保ASP.NET永遠不會通過非SSL連接向瀏覽器發送身份驗證Cookie;但是,客戶端可能不尊重cookie上的安全設置。這意味着客戶端可能會通過非SSL連接發送表單身份驗證Cookie,從而使其容易受到劫持。您可以通過在SSL下運行整個網站來阻止客戶端以明文形式發送表單身份驗證Cookie。
- 使用服務器上的持久性存儲來記錄用戶何時註銷Web站點,然後使用應用程序事件(如PostAuthenticateRequest事件)來確定當前用戶是否使用表單身份驗證進行了身份驗證。如果用戶使用表單身份驗證進行了身份驗證,並且持久存儲中的信息表明用戶已註銷,請立即清除身份驗證Cookie並將瀏覽器重定向回登錄頁面。成功登錄後,更新存儲以反映用戶已登錄。使用此方法時,應用程序必須跟蹤用戶的登錄狀態,並且必須強制空閒用戶註銷。
你可以看到它here
所以,總括起來,是的,你應該叫SignOut
何必下投票? – 2013-03-19 11:19:35
雖然我同意你發佈的這個鏈接,但我不同意使用的方法,因爲在這個問題得到解決之前,這是一個時間問題,SignOut的實踐仍應該被使用。 – 2013-03-19 11:24:23
@Shekar,我不明白爲什麼有人會在你的答案中明確地解決我的問題。 – 2013-03-19 11:24:49