0

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

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

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

4

3 回答 3

1

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

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

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

于 2012-07-21T08:49:28.013 回答
0

这只是 User.IsInRole("Administrators")

http://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.isinrole.aspx

于 2012-07-21T09:14:01.927 回答
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 是否给定用户是或不是成员。

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

于 2012-07-21T08:54:51.927 回答