在某些控制器中我有CRUD方法。为了访问这些方法,用户需要登录。这就是我为此控制器使用[Authorize]
属性的原因。现在我需要额外的属性来检查用户想要查看/删除/更新的项是否属于他。
是否可以并建议使用属性执行此操作,或者您建议在每个方法中使用检查方法?如果您建议使用属性,是否可以向我提供一些链接/说明?
编辑:
当然,如果属性返回false而不是我不想将用户重定向到登录页面但是向他显示错误消息......
答案 0 :(得分:4)
可以使用自定义的Authorize属性来完成,但将逻辑放在控制器方法中会更清晰。
答案 1 :(得分:2)
该属性与被调用的动作(控制器类方法)有关。在此基础上,与用户对被操纵对象的所有权相关的任何属性(来自您的模型)应该真正位于用户试图操纵的实体/类上。您可能会发现在Model方法中验证用户更容易,而不是使用属性来实现此目的。
答案 2 :(得分:1)
在我看来,只有谷歌才能获得'自定义授权属性'。
但也许最好用这样的方式查询你的数据库:
ContextOrSession.Query<Something>.Where(Something.Groups.Intersect(User.Groups).Count>0)