按ASP.NET Core中的用户权限级别过滤api模型属性

时间:2017-11-29 22:57:54

标签: asp.net asp.net-core

我们希望根据用户权限级别过滤/隐藏/清除特定的api模型属性。 模型本身不会有所不同。对那些人来说没有回报。

我在网上发现了很多不同的想法:

  • switch(userrole)并调用不同的逻辑方法
  • 将用户角色传递给逻辑
  • 反映清除响应中的属性(我讨厌这个想法)
  • 用于将用户重定向到不同操作的中间件

过滤特定角色的api模型属性的推荐方法是什么?

1 个答案:

答案 0 :(得分:0)

很难用你提供的东西给出任何真实的细节,但一般来说,我会说这应该进入你的映射逻辑。利用视图模型/ DTO接受来自客户端请求的数据。然后将视图模型/ DTO中的数据映射到您的实体实例。在此过程中,您可以根据用户的角色/权限集决定应该或不应映射哪些属性。所有这些逻辑都可以分解为一个单独的类或类库。最终,客户发送并不重要。无论如何你无法控制。你只需要确保他们最终不能设置他们没有“访问”的任何属性,并且映射逻辑是一个很好的地方。