2012-08-15 64 views
1

我是C#和ASP.NET(不是MVC)的新手,並試圖編寫一個網站。ASP.NET登錄,授權和會話管理方法

這裏是問題: 哪一個是登錄,授權和會話管理的最佳方法?我不問如何使用內置的成員資格類或其他即用型解決方案。我只是要求一個手動的方法或方法。

成員寫入用戶名和密碼後點擊提交按鈕;你認爲這是最好的解決方案,以保持用戶在他瀏覽頁面,點擊按鈕或以某種方式與網站交互時保持登錄

例如,它是一個很好的方法來使用會話並編寫用戶名,Id等。會話並在每個頁面請求中讀取會話以檢查是否有任何會員信息;如果是,請根據會員的喜好設置頁面佈局?

或者在登錄時創建一個對象,根據登錄的用戶設置它的屬性,並在整個會話中使用相同的對象並在註銷時銷燬它?

THX

+3

這有什麼錯內置登錄? – 2012-08-15 07:54:19

+0

@AmiramKorach太多了,你需要使用自己的模式! user1599986請[閱讀此答案](http://stackoverflow.com/a/5702000/28004) – balexandre 2012-08-15 08:28:21

+0

永遠不要玩安全。我無法強調足夠的安全性和經過驗證的解決方案在框架中已經存在。 – 2012-08-15 18:04:25

回答

3

我建議,最好的辦法是使用已被證明realiable預exisitng解決方案。

要進行驗證,請使用MemberShipProvider。如果您不想使用例如SqlMembershipProvider,請隨時通過從System.Web.Security.MembershipProvider派生出來實現您自己的目標。然後在您的應用程序的web.config文件中註冊自定義提供程序。

要開始,只需在網上搜索「建立自定義會員供應商」,你會發現很多教程。

要獲得授權,請使用web.config中的<authorization>...</authorization>部分提供的可能性。確保瞭解在應用程序的子文件夾中放置其他web.config文件的可能性。

如果您需要基於角色的授權,請使用RoleProvider。相關網頁搜索:「構建自定義角色提供商」。

如果要允許用戶存儲首選項,請使用ProfileProvider

總之,抵抗reinventing the wheel的誘惑...

+1

我很欣賞你的答案,但我不想重新發明輪子,但試圖瞭解輪子是如何工作的。使用集成解決方案總是簡單省時,但我相信在解決方案不適用的情況下,應該知道其他生存方式 – user1599986 2012-08-15 08:49:16