【问题标题】:Adding a custom field in Membership Provider在 Membership Provider 中添加自定义字段
【发布时间】:2012-07-21 17:14:01
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      这应该通过 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 是否给定用户是成员。

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

      【讨论】:

        【解决方案3】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多