0

我需要为每个操作的每个屏幕的每个模块配置用户的授权。例如,一个用户应该能够在 WorkOrder 模块中创建/保存 WorkOrders,但另一个用户应该只能查看/删除 WorkOrders。同样,第三个用户应该只能查看 WorkOrders。这是一个屏幕的示例。现在应用程序中有许多屏幕。让我们保持所有操作相同,即查看、新建、更新、删除。

还有一个报告模块,用户将在其中动态创建报告并将其添加到应用程序中。所以这里也需要授权。例如,用户可以查看/打印 WorkOrder 报告。但其他用户只能查看报告。让我们仅将报告中的操作保留为查看和打印。

我不确定 Asp.Net Core 内置授权是否能够做到这一点。到目前为止我所看到的,这是不可能的。如果我错了,请纠正我。

现在的问题是,我该怎么做?在之前构建的应用程序中,我有类似的需求,我使用数据库表来存储针对每个用户和每个屏幕的权限。在登录时,我曾经获取该数据,然后在加载网页时;我曾经根据用户的权限显示或隐藏相关的按钮和菜单。但是在 Asp.Net Razor Pages 中,操作方法很重要(如果我没记错的话),并且可以通过路由访问某些功能。我正在寻找一些基于属性的解决方案。

我发现这个链接或多或少是上面提到的使用数据库表和路由 URL 来确定操作名称的实现。因此,URL 被保存在数据库中,并在运行时检查它们并与当前 URL 匹配,并对用户进行身份验证。

这里的另一个链接,开发人员在操作方法上使用了基于属性的过滤。但是 URL 路由没有保存在数据库或任何地方。

这些是解决我的问题的唯一和最佳解决方案吗?我实施它们没有问题,它们看起来合乎逻辑。但我只想使用最好的可用方法。任何人都可以用其他更合适的方法帮助我吗?

4

0 回答 0