我想授权用户具有对实体的写入权限。我通过多种方式验证了这一点。
例如,我会检查entity.PropertyX == user.PropertyY
或entity.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...
}
对......问题部分:) 您将如何实施按实体授权?