【发布时间】:2012-07-14 16:26:00
【问题描述】:
我有我的行动方法
[Authorize(Roles="Admin")]
public ActionResult EditPosts(int id)
{
return View();
}
在我的情况下,我需要授权管理员以便他们可以编辑帖子,但是(这里是很酷的部分),我还需要允许帖子的创建者能够编辑作为普通用户的帖子。那么如何过滤掉创建帖子的用户以及管理员,但让其他人未经授权?我收到 PostEntry id 作为路由参数,但这是在属性之后,并且属性只接受常量参数,看起来非常困难,非常感谢您的回答,干杯!
【问题讨论】:
-
因为您可能不知道是谁创建了帖子,直到您查找它。在水合对象后包含此逻辑可能会更好。否则,如果您将其作为方面实现,您可能需要查找帖子两次(一次用于授权,一次用于编辑)。
-
说得好,如果他的 id 在角色条目上,我确实会查找一次,然后再次执行我的控制器逻辑。任何想法如何只访问数据库一次?
-
多考虑一下,如果您使用的是好的 ORM,并在授权调用之前设置上下文(不确定那部分),那么它应该缓存在第一级缓存中。那么,你不应该认为第二个水合物会受到影响。
-
我确实在使用 Entity Framework 4.0,但我认为它没有任何问题。
标签: c# asp.net .net asp.net-mvc-3