我在ASP.NET MVC应用程序中使用Membership Provider。我想检查用户是否是管理员。
if (Membership.ValidateUser(model.UserName, model.Password))
{
....
}
ValidateUser只获取用户名和密码,我想添加另一个字段(IsAdmin)。我该怎么写这段代码?!
答案 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)
它只是User.IsInRole(“管理员”)
http://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.isinrole.aspx