2010-09-29 55 views
3

在我的母版頁,我有:ASP.net成員添加自定義欄

MembershipUser thisUser = Membership.GetUser(); 
loggedInUserID = thisUser.ProviderUserKey.ToString(); 

thisUser讓我獲得在aspnet_Membership所有字段。

我想要一個新的字段isSubscribed爲每個用戶。我可以使用一個SQL查詢來獲取價值很好,但我想知道是否有某種方式,因此檢索該值以及修改MembershipUser對象,所以它是可訪問的:

thisUser.isSubscribed.ToString(); 

感謝您的任何幫幫我!

+0

您的字段應該是'IsSubscribed'以符合命名約定。 – cjk 2010-09-29 15:22:30

+0

聽起來像Subscriber應該是一個真正的角色。我會寫一個答案。 – 2013-11-06 10:57:28

回答

5

您需要將字段添加到配置文件提供

配置文件提供者的描述可以在這裏找到。

http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

這裏是從文章

摘錄「與個人用戶和存儲在持久格式信息的ASP.NET配置文件功能同夥的情況。配置文件允許您管理用戶信息,而不要求您創建和維護自己的數據庫。此外,ASP.NET配置文件功能使用強類型的API提供用戶信息,您可以從應用程序的任何位置訪問該API。「

+0

超級感謝,現在正在使用配置文件提供程序 – 2010-09-30 10:53:23

0

硅羅賓遜給了用於存儲針對用戶額外的元數據,一個很好的答案,而無需更改基礎架構,但如果你已經存儲的有關該用戶在自定義數據庫架構的數據,這將不太工作了。

我用的解決方案是實現我自己的成員提供:

http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx

然後你就可以實現自己的MembershipUser,其暴露IsSubscribed財產。

這適用於ASP.NET內部的Membership過程,例如登錄組件。您只需將GetUser()返回的對象轉換爲您的自定義實現,然後進行設置!

1

成員資格用於識別和認證。爲了獲得元屬性,破解安全性並不是一個好習慣。

如前所述,配置文件是存儲元數據的適當位置,這將避免需要自定義MembershipUser。

如果你需要數據的SQL查詢訪問使用SqlTableProvider

0

您可以使用的角色,這和將用戶分配到用戶的角色。如:

Roles.AddUserToRole("Bob", "Subscriber"); 

你會有一個真正無趣的時間查詢個人資料字段。隨着一個角色,你將能夠枚舉用戶提供:

Roles.GetUsersInRoles("Subscriber"); 

你就可以將這些角色添加到web.config文件中,以控制該網站的部分用戶只可以看到。可能比使用基於配置文件字段的條件包裝內容更好。