1
我很努力地完全理解在MVC4应用程序中实现Windows身份验证和基于角色的授权方案的正确方法。当用户访问(内部网)的网站目前我有以下方法检查用户名反对对数据库表是否需要角色提供者实现?
List<string> permissionList =
PermissionBo.GetUserPermissionsList(PermissionBo.ParseUserName(User.Identity.Name));
Permissions permissions = new Permissions(permissionList);
然后,如果状态增加了一个角色给用户对象的下列内容:
if (permissions.IsAdmin)
{
if(!Roles.RoleExists("UtilitiesToolAdmin"))
{
Roles.CreateRole("UtilitiesToolAdmin");
}
if(!Roles.IsUserInRole(User.Identity.Name, "UtilitiesToolAdmin"))
{
Roles.AddUsersToRole(new string[] { User.Identity.Name }, "UtilitiesToolAdmin");
}
}
我觉得这可能是一个不正确的方式去实现这一点,但我不知道我错了。这足以开始使用授权属性,如下所示:
[Authorize(Roles="UtilitiesToolAdmin")]
public static void Foo()
{
return "Bar"
}
如果不是我错过了什么?
使用授权属性是你应该做的。唯一不使用授权的时间是,如果您必须以编程方式确定访问权限。 – 2014-10-08 20:39:22
我会尝试清除我的问题,但我知道我想使用Authorize属性,但是我不清楚如果它是“正确的”以编程方式向用户添加角色,就像我所做的那样 – Pseudonym 2014-10-08 20:40:23