我需要为每个操作每个屏幕的每个模块配置用户授权。例如,一个用户应该能够在WorkOrder Module中创建/保存WorkOrder,而另一用户应该只能查看/删除WorkOrder。同样,第三位用户只能查看工作订单。这是一个屏幕的示例。现在,应用程序中有许多屏幕。让我们对所有操作保持相同,即查看,新建,更新,删除。
还有一个报告模块,用户可以在其中动态创建报告并将其添加到应用程序中。因此,这里也需要授权。例如,用户可以查看/打印WorkOrder报告。但是另一个用户只能查看报告。让我们仅在报告中查看和打印操作。
我不确定Asp.Net Core内置授权是否可以做到这一点。我到目前为止所看到的,是不可能的。如果我错了,请纠正我。
现在的问题是,我应该怎么做?在以前构建的应用程序中,我有类似的要求,在该应用程序中,我使用数据库表来存储针对每个用户和每个屏幕的权限。登录后,我通常先获取数据,然后再加载网页。我曾经根据用户的权限显示或隐藏相关的按钮和菜单。但是在Asp.Net Razor Pages中,操作方法很重要(如果我没记错的话),某些功能可以通过路由访问。我正在寻找一些基于属性的解决方案。
我发现这个link具有上述使用数据库表和路由URL来确定操作名称的实现方式。因此,URL被保存在数据库中,并且在运行时会被检查并与当前URL匹配,从而对用户进行身份验证。
Another link在此处,开发人员在操作方法上使用了基于属性的过滤。但是URL路由并未保存在数据库中或任何地方。
这些是我问题的唯一最佳解决方案吗?我实现它们没有问题,它们看起来合乎逻辑。但是我只想使用最好的方法。谁能用其他更合适的方法帮助我?