如何将Authorization属性角色MVC4设置给用户?

时间:2013-07-18 16:51:16

标签: asp.net asp.net-mvc-4 attributes

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

然而,您可以自由地实施自定义身份验证模块。

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

答案 1 :(得分:0)

您可以使用

将当前用户添加到角色

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

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

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

答案 2 :(得分:0)

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

var rolesProvider = (SimpleRoleProvider)Roles.Provider;

检查角色是否存在

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

检查用户是否已经担任角色,如果没有,请将用户添加到角色

if (! rolesProvider.IsUserInRole("JohnSmith", "SuperUser"))
{
    rolesProvider.AddUsersToRoles(new[] {"JohnSmith"}, new[] {"SuperUser"});
}