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的。

相关问题