0

我在ASP.NET MVC應用程序中使用成員資格提供程序。我想檢查一個用戶是否是管理員。在成員資格提供程序中添加自定義字段

if (Membership.ValidateUser(model.UserName, model.Password)) 
    { 
      .... 
    } 

ValidateUser只獲取用戶名和密碼,我想添加另一個字段(IsAdmin)。我怎麼寫這個代碼?!

回答

1

由於@jsalvy提醒我,你可以這樣做:

bool isUserAdmin = IsUserInRole(userName, "Admin"); 

如果用戶在角色或虛假如果不是IsUserInRole將返回true。您還可以使用string[] userRoles = Roles.GetRolesForUser(userName);來獲取用戶的所有角色。您還可以使用[Authorize(Roles = "Admin")]屬性將訪問權限制爲不是管理員的任何人。

+0

非常感謝你 – 2012-07-21 10:39:36

0

這應該用RoleProvider而不是MembershipProvider的實現完成,因爲MembershipProvider不處理權限/角色。

http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx是RoleProvider基類的簡要概述。正如你可以看到它包含像'IsUserInRole'這樣的方法,可以讓你檢查這樣的事情。

下面是如何實現它一個更深入的示例:http://msdn.microsoft.com/en-us/library/317sza4k.aspx

除此之外,你總是可以創建一個MembershipManager類某種直接會針對您的數據源給定的用戶是否是或不是的成員。

編輯:我想澄清一點,您不需要使用標準setup.NET Membership/Role/Profile模型在RoleProvider之上實現提供程序。如果您爲用戶設置了角色,則可以使用Roles Class訪問它們。 Roles類是RoleProvider,Membership類是MembershipProvider的。

相關問題