2012-05-13 98 views
0

我使用.NET成員資格,但我工作的一切我想要自定義。自定義.NET成員資格

我想要做的是:

  1. 自定義字段創建自定義數據表[用戶]
  2. 導入當前的數據插入到新表
  3. 創建自定義類和功能有關的一切我需要的[網友]

我真的不知道怎麼籍工作.NET,但也許它發送加密的Cookie,然後當我使用

var user = Membership.GetUser(); 

.Net解密用戶cookie並知道哪個用戶是。

這裏是.NET如何創建用戶AUTH的cookie http://prntscr.com/97043

但每次用戶註銷登錄截圖,這個值是不同的。

所以我想知道的是:

  1. 可以說我要打100%定製的網站,我怎麼可以自定義登錄?
  2. 你能告訴我關於去定製會員的所有安全問題嗎?
+0

你有沒有看到我的回答對同一問題? http://stackoverflow.com/questions/5701673/custom-membershipprovider-in-net-4-0/5702000#5702000 – balexandre

回答

0

實現自定義後端並不困難。您只需實現一個自定義的MembershipProvider,如果您認爲合適,它將存儲和檢索用戶表中的數據。見MSDN。此外,您不必完全重寫SqlMembershipProvider,您可以對其進行子類化並添加所需的功能。

如果你真的想從頭開始在後臺,這裏有一些問題要注意:

  • 不要存放在任何地方明文密碼;哈希他們。
  • Salt your passwords
  • 登錄&監控密碼重置

而且,你不必完全重寫SqlMembershipProvider,你也可以繼承它,並添加你要找的功能,大多數的問題你可能遇到的情況將由默認實現覆蓋。您可能只需略微修改數據訪問調用或存儲過程以映射到表結構。您還可以繼承SqlRoleProvider的子類,爲您的站點提供基於角色的授權,只需少量額外的工作。

至於前端組件,MSDN也描述了how forms authentication works,但個人而言,我不會搞砸你自己的cookie方案。即使像asp.net的Oauth這樣的大型自定義實現仍然使用表單。退房http://msdn.microsoft.com/en-us/library/system.web.security.sqlroleprovider.aspx

1

這是沒有必要的。您可以創建自己的用戶表,而無需更改與成員資格或身份驗證相關的任何內容。你只要確保你的用戶表有一個名爲AspNetUserID的列或類似uniqueidentifier(一個GUID)的列。您可以將MembershipUser中的ProviderUserKey放入此表中,只需從Membership中獲取ProviderUserKey即可查找Users表中的任何用戶。

因此,舉例來說,你可以這樣做:

var userid = Membership.GetUser().ProviderUserKey; 

// lookup your record in users based on userid above 
相關問題