2009-09-24 85 views
0

我有我的数据库中由不同用户创建的帖子的集合。ASP.NET MVC检查用户是否可以执行操作

  • 每个用户都可以创建帖子并只编辑他们的帖子。
  • 要编辑他们的帖子,用户导航到“Posts/EditPost?PostID = x”页面,其中x是帖子ID。

  • “Posts”控制器具有'[Authorize]'属性,操作的GET部分检查是否由用户创建帖子。

如果用户的确确实发布了帖子,它将呈现视图。在视图中有一个带有“PostID”的隐藏字段。

当用户提交表单时,如果PostID匹配当前登录用户创建的帖子,则操作的POST部分会重新检查。

有没有更好的方法来实现这一点,而无需再次检查用户是否有权编辑帖子,或者这是最好的方式?

回答

1

这对我来说听起来很不错。如果您不想检查用户两次,我可以建议的唯一方法就是使用您使用视图呈现的anti-forgery token之类的内容。由于您只能看到是否允许您编辑帖子,在这一点上,我认为您所需要做的就是检查POST是否来自您的网站。

0

我有同样的问题,但我解决了它通过删除在视图编辑的能力。一旦编辑的能力被删除,我可以有点假设,如果编辑了,那么用户有权利。

我这样做是因为其他人,版主也必须能够编辑帖子。

很明显,这可能无法在互联网上运行,因为您可以避开安全问题,但在公司内部网上它是一种享受。

我仍然认为我应该检查业务层的用户权限,但他们需要给我更多的钱和时间。 :)

相关问题