在Membership Provider中添加自定义字段

时间:2012-07-21 08:32:55

标签: asp.net-mvc asp.net-mvc-3 asp.net-membership membership-provider

我在ASP.NET MVC应用程序中使用Membership Provider。我想检查用户是否是管理员。

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

ValidateUser只获取用户名和密码,我想添加另一个字段(IsAdmin)。我该怎么写这段代码?!

3 个答案:

答案 0 :(得分:1)

正如@jsalvy提醒我的那样,你可以这样做:

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

如果用户在角色中,IsUserInRole将返回true,否则返回false。您还可以使用string[] userRoles = Roles.GetRolesForUser(userName);来获取用户所在的所有角色。您还可以使用[Authorize(Roles = "Admin")]属性来限制对非管理员的访问权限。

答案 1 :(得分: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类,直接检查您的DataSource,无论给定用户是否是成员。

编辑:我想澄清一点,您不需要在RoleProvider之上使用标准的setup.NET Membership / Role / Profile模型实现提供程序。如果您为用户设置了角色,则可以使用Roles Class访问它们。 Roles类是RoleProvider,Membership类是MembershipProvider的。

答案 2 :(得分:0)