PrincipalPermission 与授权属性?
PrincipalPermission vs Authorize Attribute?
谁能给我解释一下这两个属性的区别和用例?我很困惑,因为他们的行为相似。
我知道 [Authorize] 在请求到达 Controller/Action 之前挂钩到 ASP.NET 应用程序生命周期和 运行。 PrincipalPermission 怎么样?
[PrincipalPermission(SecurityAction.Demand, Role="Admin")]
和
[Authorize(Roles="Admin")]
Authorize
属性用于指定对控制器或操作方法的访问限制。换句话说,您可以授予或拒绝 users/roles 访问站点内的单个页面或 URL 的权限。
当您在 ASP.NET 应用程序中对用户进行身份验证时,经过身份验证的用户的身份将在该用户对服务器的请求中自动流动。
您可以通过 PrincipalPermission
属性在业务 classes 上使用此身份信息。使用 PrincipalPermission
您可以授权用户的能力。例如,您可以阻止用户实例化 class 或访问您业务中的方法 classes.
这使得向您的业务和数据层添加干净的安全授权规则变得容易。
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
class 只能由授权用户实例化。
LookupEmployee
方法只能由具有 Manager
角色的用户访问。
参考资料
谁能给我解释一下这两个属性的区别和用例?我很困惑,因为他们的行为相似。
我知道 [Authorize] 在请求到达 Controller/Action 之前挂钩到 ASP.NET 应用程序生命周期和 运行。 PrincipalPermission 怎么样?
[PrincipalPermission(SecurityAction.Demand, Role="Admin")]
和
[Authorize(Roles="Admin")]
Authorize
属性用于指定对控制器或操作方法的访问限制。换句话说,您可以授予或拒绝 users/roles 访问站点内的单个页面或 URL 的权限。
当您在 ASP.NET 应用程序中对用户进行身份验证时,经过身份验证的用户的身份将在该用户对服务器的请求中自动流动。
您可以通过 PrincipalPermission
属性在业务 classes 上使用此身份信息。使用 PrincipalPermission
您可以授权用户的能力。例如,您可以阻止用户实例化 class 或访问您业务中的方法 classes.
这使得向您的业务和数据层添加干净的安全授权规则变得容易。
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
class 只能由授权用户实例化。LookupEmployee
方法只能由具有Manager
角色的用户访问。
参考资料