【问题标题】:Web API per entity authorization每个实体授权的 Web API
【发布时间】:2015-08-06 13:25:34
【问题描述】:

我想授权用户对实体具有写入权限。我通过多种方式验证了这一点。 例如,我会检查 entity.PropertyX == user.PropertyYentity.Users.Contains(user)) 还是一些更复杂的东西...

目前我直接在控制器操作中执行此操作,随着控制器数量的增加,这不再是可接受的。

// example class, pretty much all classes have these properties
// lets assume they do for brevity
public class Foo     
{
    // omitted...
    public int PropertyX { get; set; }
    public virtual ICollection<User> Users { get; set; }
}

我想将此逻辑移动到一个属性中。但我不确定我是否可以在属性中获得相同的灵活性。因为我经常/总是需要有问题的实体来对照用户检查它,这在属性中不容易做到。 (据我所知)

身份

目前我正在使用自己的用户表,但我计划在某个时候更改为 Identity。我听说过基于声明的授权,但我必须说我还没有得到它:( 所以声明在这里对我有任何帮助吗?据我了解,它只是用就像一个地址字段。

控制器

[CheckIfUserHasAccess]
public IHttpActionResult Post(T entity)
{
    // omitted...
}

[CheckIfUserHasAccess]
public IHttpActionResult Patch(int id, JObject jobj)
{
    // omitted...
}

对...问题部分:) 您将如何实施每个实体的授权

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-web-api identity


    【解决方案1】:

    我会使用自定义授权过滤器。这将使您能够使用将执行自定义授权逻辑的自定义属性来装饰操作。

    有一些关于如何操作的基本信息here

    【讨论】:

      猜你喜欢
      • 2014-08-29
      • 2014-01-04
      • 2018-05-21
      • 2020-09-11
      • 2012-10-25
      • 1970-01-01
      • 2017-12-09
      • 2021-11-21
      • 2011-02-24
      相关资源
      最近更新 更多