我在我的 ASP.NET MVC Application 中使用 Membership Provider 。我想检查一个用户是否是管理员。
if (Membership.ValidateUser(model.UserName, model.Password))
{
....
}
ValidateUser 只获取用户名和密码,我想添加另一个字段 (IsAdmin)。我怎么能写这段代码?!
我在我的 ASP.NET MVC Application 中使用 Membership Provider 。我想检查一个用户是否是管理员。
if (Membership.ValidateUser(model.UserName, model.Password))
{
....
}
ValidateUser 只获取用户名和密码,我想添加另一个字段 (IsAdmin)。我怎么能写这段代码?!
正如@jsalvy 提醒我的那样,您可以这样做:
bool isUserAdmin = IsUserInRole(userName, "Admin");
如果用户在角色中,则返回 true ,IsUserInRole
否则返回 false。您还可以使用string[] userRoles = Roles.GetRolesForUser(userName);
来获取用户所在的所有角色。您可以使用该[Authorize(Roles = "Admin")]
属性来限制对非管理员的任何人的访问。
这只是 User.IsInRole("Administrators")
http://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.isinrole.aspx
这应该通过 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 而言。