我正在尝试在 MVC 4 应用程序上使用 Authorize 属性,
[Authorize(Roles = "Administrator, Super-User")]
public JsonResult Remove(int id)
{
.
.
.
}
我知道只有角色“管理员”和“超级用户”角色有权执行该方法Remove
,但是我如何将角色设置为应用程序的实际用户?
我正在尝试在 MVC 4 应用程序上使用 Authorize 属性,
[Authorize(Roles = "Administrator, Super-User")]
public JsonResult Remove(int id)
{
.
.
.
}
我知道只有角色“管理员”和“超级用户”角色有权执行该方法Remove
,但是我如何将角色设置为应用程序的实际用户?
答案是 - 不知何故,所以HttpContext.Current.User
设置并且IsInRole
方法返回 true。
最简单的方法是遵循内置的身份验证/授权机制之一:表单身份验证或 Windows 身份验证。
前者要求请求携带服务器发出的有效表单cookie。后者要求请求主体可以在域控制器中进行身份验证。
但是,您可以自由实施自定义身份验证模块。
如果您刚刚开始学习这一点,您可能希望为此使用表单身份验证。只需让您的用户登录,发出 cookie,随后的 ajax 请求将自动携带 cookie(假设您的服务器代码是从 javascript 客户端 ajax 调用中调用的)。
您可以使用将当前用户添加到角色
Roles.AddUsersToRole(new string[]{HttpContext.Current.User.Identity.Name}, "Admin");
Roles 类在 System.Web.Security 命名空间中可用。
如果您想添加用户和角色 - 在 Visual Studio 中打开您的解决方案转到项目-> ASP.NET 配置-> 安全选项卡
您可以使用角色提供者将用户添加到角色。
var rolesProvider = (SimpleRoleProvider)Roles.Provider;
检查角色是否存在
if (!rolesProvider.RoleExists("SuperUser"))
{
rolesProvider.CreateRole("SuperUser");
}
检查用户是否已经在角色中,如果没有,将用户添加到角色中
if (! rolesProvider.IsUserInRole("JohnSmith", "SuperUser"))
{
rolesProvider.AddUsersToRoles(new[] {"JohnSmith"}, new[] {"SuperUser"});
}