我在ASP.NET MVC應用程序中使用成員資格提供程序。我想檢查一個用戶是否是管理員。在成員資格提供程序中添加自定義字段
if (Membership.ValidateUser(model.UserName, model.Password))
{
....
}
ValidateUser只獲取用戶名和密碼,我想添加另一個字段(IsAdmin)。我怎麼寫這個代碼?!
我在ASP.NET MVC應用程序中使用成員資格提供程序。我想檢查一個用戶是否是管理員。在成員資格提供程序中添加自定義字段
if (Membership.ValidateUser(model.UserName, model.Password))
{
....
}
ValidateUser只獲取用戶名和密碼,我想添加另一個字段(IsAdmin)。我怎麼寫這個代碼?!
由於@jsalvy提醒我,你可以這樣做:
bool isUserAdmin = IsUserInRole(userName, "Admin");
如果用戶在角色或虛假如果不是IsUserInRole
將返回true。您還可以使用string[] userRoles = Roles.GetRolesForUser(userName);
來獲取用戶的所有角色。您還可以使用[Authorize(Roles = "Admin")]
屬性將訪問權限制爲不是管理員的任何人。
這應該用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的。
它只是User.IsInRole( 「管理員」)
http://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.isinrole.aspx
非常感謝你 – 2012-07-21 10:39:36