基于ASP.NET的授权?

我正在开发一个ASP.NET应用程序(不使用MVC),并且需要基于用户角色许可的授权方案,其中页面和/或方法可以要求他们所需的特定权限(而不是用户拥有的角色)。 有没有办法扩展窗体身份验证(或建立一些东西)来解决这个问题?

如果可能的话,我希望能够使用属性:

[RequirePermission("UserEdit")]
public partial class EditUser : System.Web.UI.Page
{
}

也许甚至对于方法:

public class MyClass
{
    ...
    [RequirePermission("UserEdit")]
    public void Save()
    {
        ...
    }
}

这可能吗?

我发现这个页面,建议使用角色权限:

[Authorize(Roles = "UserEdit")]
public partial class EditUser : System.Web.UI.Page
{
}

我不太喜欢这种解决方案,但这也是解决问题的一种可能方式,但是我需要做些什么来实现它呢?


微软的授权模式很糟糕......它已被广泛认可http://lostechies.com/derickbailey/2011/05/24/dont-do-role-based-authorization-checks-do-activity-based-checks/)。

这就是说。 通过适应他们的IPrincipal.IsInRole API来交叉兼容是很好的(因此可以利用Authorize属性)

所以...我做的妥协是在数据库中拥有完整的权限模型,包括用户,角色和权限...但是当我的代码设置CurrentPrincipal我将用户的角色和权限平铺到IPrincipal的角色集合中。 这远非理想......但恕我直言,这是一个体面的妥协。 其他人(罗克福德Lhotka)也采取了这种方法:http://www.lhotka.net/weblog/PermissionbasedAuthorizationVsRolebasedAuthorization.aspx

链接地址: http://www.djcxy.com/p/15967.html

上一篇: based authorization in ASP.NET?

下一篇: ASP.NET MVC Authorization: Permissions in Place of Roles