gpt4 book ai didi

asp.net - 如何在 ASP.NET 中实现基于权限的授权?

转载 作者:行者123 更新时间:2023-12-02 07:10:11 25 4
gpt4 key购买 nike

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

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

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

也许甚至对于方法:

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

这可能吗?

我找到了this page ,建议使用角色来获取权限:

[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 的 Roles 集合中的权限。这远非理想……但恕我直言,这是一个不错的妥协。其他人(Rockford Lhotka)也采取了这种方法:http://www.lhotka.net/weblog/PermissionbasedAuthorizationVsRolebasedAuthorization.aspx

关于asp.net - 如何在 ASP.NET 中实现基于权限的授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7258512/

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