2

我正在尝试在 MVC 4 应用程序上使用 Authorize 属性,

[Authorize(Roles = "Administrator, Super-User")]
public JsonResult Remove(int id)
{
      .
      .
      .
}

我知道只有角色“管理员”和“超级用户”角色有权执行该方法Remove,但是我如何将角色设置为应用程序的实际用户?

4

3 回答 3

1

答案是 - 不知何故,所以HttpContext.Current.User设置并且IsInRole方法返回 true。

最简单的方法是遵循内置的身份验证/授权机制之一:表单身份验证或 Windows 身份验证。

前者要求请求携带服务器发出的有效表单cookie。后者要求请求主体可以在域控制器中进行身份验证。

但是,您可以自由实施自定义身份验证模块。

如果您刚刚开始学习这一点,您可能希望为此使用表单身份验证。只需让您的用户登录,发出 cookie,随后的 ajax 请求将自动携带 cookie(假设您的服务器代码是从 javascript 客户端 ajax 调用中调用的)。

于 2013-07-18T17:12:45.087 回答
0

您可以使用将当前用户添加到角色

Roles.AddUsersToRole(new string[]{HttpContext.Current.User.Identity.Name}, "Admin");

Roles 类在 System.Web.Security 命名空间中可用。

如果您想添加用户和角色 - 在 Visual Studio 中打开您的解决方案转到项目-> ASP.NET 配置-> 安全选项卡

于 2013-07-18T20:04:43.220 回答
0

您可以使用角色提供者将用户添加到角色。

var rolesProvider = (SimpleRoleProvider)Roles.Provider;

检查角色是否存在

if (!rolesProvider.RoleExists("SuperUser"))
{
    rolesProvider.CreateRole("SuperUser");
}

检查用户是否已经在角色中,如果没有,将用户添加到角色中

if (! rolesProvider.IsUserInRole("JohnSmith", "SuperUser"))
{
    rolesProvider.AddUsersToRoles(new[] {"JohnSmith"}, new[] {"SuperUser"});
}
于 2013-07-18T21:56:38.717 回答