【问题标题】:ASP.Net Web Forms Entity Level Access ControlASP.Net Web 表单实体级访问控制
【发布时间】:2009-02-11 23:30:19
【问题描述】:

我有一个 ASP.Net Web Forms 应用程序,我在其中使用基于表单的身份验证以及成员资格和角色提供程序,这对于验证和控制对目录和/或文件的访问非常有用。现在我发现自己需要控制对单个实体实例的读取、写入和删除访问,例如能够更新或删除客户的实例。我一直在想一个很好的方法来实现它,但我真的不知道从哪里开始。我读到了the Authorize attribute in ASP.Net MVC,并认为有一些类似的东西会很好——装饰方法就像你可以在 ASP.Net MVC 中控制动作一样。不过,我不知道在 Web 窗体世界中实现这一目标的任何开箱即用的方法,也不知道任何框架或其他工具可以帮助我朝着这个方向前进。任何关于现有解决方案和/或如何设计我自己的实现的建议都将不胜感激。

【问题讨论】:

    标签: asp.net security webforms authorization


    【解决方案1】:

    最简单的方法是通过PrincipalPermissionAttribute 要求用户是相关方法所需角色的成员。

    [PrincipalPermission(SecurityAction.Demand, Role="Supervisor")]
    [PrincipalPermission(SecurityAction.Demand, Role="Owner")]
    public void DeleteSomething() {...}
    

    请注意,这意味着主管或所有者可以DeleteSomething()

    【讨论】:

    • 感谢并投赞成票。在我的无知中,我从来不知道 PrincipalPermission 属性,所以我会调查一下。我将暂时搁置这个问题,看看它是否会吸引任何额外的见解。
    【解决方案2】:

    我认为“PrincipalPermission”不是一个好方法。 如果,我需要为另一个角色允许 DeleteSomthing() 怎么办? 同样,如果我需要删除 DeleteSomthing() 的现有角色? 唯一的方法是在代码级别更改属性。这对于大型项目来说根本不可行。

    我也在寻找一个不错的解决方案。

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 1970-01-01
      • 2015-01-15
      • 2012-02-14
      • 2019-09-22
      • 2011-10-12
      • 2013-04-01
      • 2013-09-24
      • 2010-11-27
      相关资源
      最近更新 更多