PrincipalPermission vs Authorize Attribute?



谁能给我解释一下这两个属性的区别和用例?我很困惑,因为他们的行为相似。

我知道[authorization]与ASP挂钩。. NET应用程序生命周期,并在请求到达控制器/操作之前运行。校长许可呢?

[PrincipalPermission(SecurityAction.Demand, Role="Admin")]

[Authorize(Roles="Admin")]

Authorize属性用于指定对控制器或动作方法的访问限制。换句话说,您可以授予或拒绝用户/角色访问站点内单个页面或url的权限。

当您在ASP中验证用户时。. NET应用程序,通过身份验证的用户的身份将自动流经服务器上该用户的请求。

您可以通过PrincipalPermission属性在业务类上使用此标识信息。使用PrincipalPermission,您可以授权用户的能力。例如,您可以阻止用户实例化类或访问业务类上的方法。

这使得向业务层和数据层添加干净的安全授权规则变得容易。

using System;
using System.Security.Permissions;
[PrincipalPermission(SecurityAction.Demand, Authenticated = true)]
public class EmployeeManager
{
    [PrincipalPermission(SecurityAction.Demand, Role = "Manager")]
    public Employee LookupEmployee(int employeeID)
    {
       // todo
    }
    [PrincipalPermission(SecurityAction.Demand, Role = "HR")]
    public void AddEmployee(Employee e)
    {
       // todo
    }
}

例如,使用PrincipalPermission属性,

  • EmployeeManager类只能由授权用户实例化。
  • LookupEmployee方法只能由具有Manager角色的用户访问。

引用

向业务层和数据层添加授权规则

ASP。. NET 2.0安全最佳实践

最新更新