我正在尝试在MVC 4应用程序上使用Authorize属性,
[Authorize(Roles = "Administrator, Super-User")]
public JsonResult Remove(int id)
{
.
.
.
}
我知道只有角色“管理员”和“超级用户”角色被授权执行方法Remove
,但我如何将角色设置为应用程序的实际用户?
答案 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"});
}