ASP.NET MVC检查用户是否可以执行操作

时间:2009-09-24 22:25:14

标签: c# asp.net-mvc

我有一组由我的数据库中的不同用户创建的帖子。

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

  • “帖子”控制器有一个“[授权]”属性,操作的GET部分会检查帖子是否由用户制作。

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

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

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

2 个答案:

答案 0 :(得分:1)

这听起来对我来说非常好。如果你不想两次检查用户,我唯一能建议的就是使用你用视图渲染的anti-forgery token之类的东西。由于您只能查看是否允许编辑帖子,此时我认为您需要做的就是检查POST是否来自您的网站。

答案 1 :(得分:0)

我遇到了同样的问题,但我通过删除在View中编辑的功能解决了这个问题。一旦删除了编辑功能,我可以假设如果进行了编辑,那么用户就拥有了权利。

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

显然,这可能无法在互联网上运行,因为您可以绕过安全设备,但在公司内部网上可以使用它。

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

相关问题