我有一组由我的数据库中的不同用户创建的帖子。
要编辑帖子,用户会导航到“Posts / EditPost?PostID = x”页面,其中x是帖子ID。
“帖子”控制器有一个“[授权]”属性,操作的GET部分会检查帖子是否由用户制作。
如果用户确实发布了帖子,则会呈现视图。在视图中有一个带有“PostID”的隐藏字段。
当用户提交表单时,如果PostID与当前登录用户创建的帖子匹配,则操作的POST部分将重新检查。
有没有更好的方法来实现这一点,而无需仔细检查用户是否有权编辑帖子,或者这是最好的方式?
答案 0 :(得分:1)
这听起来对我来说非常好。如果你不想两次检查用户,我唯一能建议的就是使用你用视图渲染的anti-forgery token之类的东西。由于您只能查看是否允许编辑帖子,此时我认为您需要做的就是检查POST是否来自您的网站。
答案 1 :(得分:0)
我遇到了同样的问题,但我通过删除在View中编辑的功能解决了这个问题。一旦删除了编辑功能,我可以假设如果进行了编辑,那么用户就拥有了权利。
我这样做是因为其他人,主持人,也必须能够编辑帖子。
显然,这可能无法在互联网上运行,因为您可以绕过安全设备,但在公司内部网上可以使用它。
我仍然认为我应该在业务层检查用户权限,但他们需要给我更多的金钱和时间。 :)