首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PrincipalPermission还是授权属性?

PrincipalPermission还是授权属性?
EN

Stack Overflow用户
提问于 2016-08-24 08:50:26
回答 1查看 5.4K关注 0票数 10

有人能向我解释这两种属性的区别和用例吗?我很困惑,因为他们的行为相似。

我知道授权会连接到ASP.NET应用程序生命周期,并在请求到达Controller/Action之前运行。PrincipalPermission怎么样?

代码语言:javascript
复制
[PrincipalPermission(SecurityAction.Demand, Role="Admin")]

代码语言:javascript
复制
[Authorize(Roles="Admin")]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-24 08:57:45

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

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

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

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

代码语言:javascript
复制
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安全最佳实践

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39118621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档