2012-03-31 32 views
0

我正在使用ASP.net成員資格,但我想爲註冊而不是默認列作爲成員資格提供程序存儲客戶端的其他信息,所以如何自定義dbo.aspnet_Users表並更改代碼,以便它不影響其他功能和工作正常?如何自定義asp.net成員資格的dbo.aspnet_Users表?

有人可以建議我怎麼做到這一點?

+3

一個字:**不要**!我會**從不**修改由另一個系統提供的表格。如果你需要額外的信息 - 將它存儲到一個**附加表**中,通過一個共同的共享PK(作爲附加表中的FK)引用'aspnet_Users'表。 – 2012-03-31 08:05:17

+0

我該如何實現? – NoviceToDotNet 2012-03-31 08:08:35

+0

創建一個新表,將該表的PK設置爲與'aspnet_Users'表的PK相同的數據類型,在這兩個表之間創建一個外鍵關係,然後根據需要填寫數據。在註冊完成後,您需要能夠獲取所有數據 - 我自己從來沒有這樣做過,但是「羅拉4個人」網站(Tim在他的回覆中提到)擁有**噸的好文章ASP.NET會員系統以及如何定製和擴展它 – 2012-03-31 08:13:26

回答

1

使用ASP.NET Profile-Provider

http://www.4guysfromrolla.com/articles/101106-1.aspx

您可以存儲任何類型的信息,甚至是二進制文件(影像)。 我已經使用我自己的SqlProfileProvide在我的正確應用程序中讓用戶選擇自己的首頁。 爲此我只需要把它添加到web.config

<profile defaultProvider="AspNetSqlProfileProvider"> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="RM2ConnectionString" applicationName="/ERP"/> 
    </providers> 
    <properties> 
    <add name="Startpage"/> 
    </properties> 
</profile> 

,我可以在代碼隱藏寫此屬性:

if(User.Identity.IsAuthenticated) 
{ 
    HttpContext.Current.Profile.SetPropertyValue("Startpage", startPage); //startPage is a String 
    HttpContext.Current.Profile.Save(); 
} 

,並以下列方式閱讀:

if(User.Identity.IsAuthenticated) 
{ 
    Dim user = Membership.GetUser(); 
    Dim startPage = HttpContext.Current.Profile.GetPropertyValue("Startpage") as String; 
} 

您可以存儲任何您想要的內容,請參閱上面的鏈接瞭解更多信息。

+0

在那裏我看到他們正在使用兩個嚮導,不能在1個嚮導中使用單個合併信息...? – NoviceToDotNet 2012-03-31 09:35:40

+0

@NoviceToDotNet:你根本不需要任何嚮導。編輯我的答案。 – 2012-03-31 11:26:39

+0

我做了與你所提到的相同的內容,但是顯示「不能爲匿名用戶設置此屬性。」 – NoviceToDotNet 2012-04-02 11:15:56

相關問題