.NET自定义授权属性(mvc)

时间:2010-12-17 13:09:45

标签: asp.net-mvc attributes controller

在某些控制器中我有CRUD方法。为了访问这些方法,用户需要登录。这就是我为此控制器使用[Authorize]属性的原因。现在我需要额外的属性来检查用户想要查看/删除/更新的项是否属于他。

是否可以并建议使用属性执行此操作,或者您建议在每个方法中使用检查方法?如果您建议使用属性,是否可以向我提供一些链接/说明?

编辑:
当然,如果属性返回false而不是我不想将用户重定向到登录页面但是向他显示错误消息......

3 个答案:

答案 0 :(得分:4)

可以使用自定义的Authorize属性来完成,但将逻辑放在控制器方法中会更清晰。

答案 1 :(得分:2)

该属性与被调用的动作(控制器类方法)有关。在此基础上,与用户对被操纵对象的所有权相关的任何属性(来自您的模型)应该真正位于用户试图操纵的实体/类上。您可能会发现在Model方法中验证用户更容易,而不是使用属性来实现此目的。

答案 2 :(得分:1)

在我看来,只有谷歌才能获得'自定义授权属性'。

但也许最好用这样的方式查询你的数据库:

ContextOrSession.Query<Something>.Where(Something.Groups.Intersect(User.Groups).Count>0)