gpt4 book ai didi

c# - PrincipalPermission 与授权属性?

转载 作者:太空狗 更新时间:2023-10-29 18:34:43 25 4
gpt4 key购买 nike

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

我知道 [Authorize] Hook 到 ASP.NET 应用程序生命周期并在请求到达 Controller /操作之前运行。 PrincipalPermission 怎么样?

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

[Authorize(Roles="Admin")]

最佳答案

Authorize 属性用于指定对 Controller 或操作方法的访问限制。换句话说,您可以授予或拒绝用户/角色访问站点中的各个页面或 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 角色的用户访问。

引用资料

Adding Authorization Rules to Business and Data Layers

ASP.NET 2.0 Security Best Practices

关于c# - PrincipalPermission 与授权属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39118621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com