3

我有任何用户都可以编辑的帖子列表。
当我在隐藏字段中进入帖子的编辑模式时,我存储PostId.
现在我发现这实际上很糟糕,因为用户可以更改该隐藏字段并更新其他一些帖子。

保留用户编辑的帖子是session唯一的选择id,还是有更好的策略?

因为我真的很糟糕:(

4

3 回答 3

5

有一个更好的策略:

在更新记录之前,检查用户尝试更新的记录是否属于当前经过身份验证的用户。

您可以编写一个自定义授权属性来为您执行此任务。这是an example.

于 2012-12-16T13:32:30.977 回答
0

尝试将帖子 ID 作为隐藏字段,而不是更多字段。然后,在控制器中使用该 ID 从数据库中获取原始帖子。

然后你必须检查:

  • 如果 id 确实从数据库中提取了某些内容(以防帖子已被删除或用户更改了隐藏中的 id)。
  • 如果要编辑的帖子来自该用户/租户(如果来自该用户,并且他将您隐藏的 id 更改为指向他自己的其他帖子,这是他的责任)。
  • 在逻辑中添加您需要的任何其他检查(检查用户是否有权这样做,或检查日期等)
  • 您可以从数据库中更新您允许在 post 对象中编辑的字段,然后保存它(假设您PostViewModel在操作中收到 a 而不是Post模型本身。

这种方法也可以在 DELETE 情况下使用,检查是否可以删除给定 id 的项目。

于 2012-12-16T13:42:49.943 回答
0

将其保存在 asp Hidden 字段中并将 Visible 属性设置为 false。这将允许您访问使控件在页面上不可见的值,即使在其呈现的 html 标记中

于 2012-12-16T13:59:49.623 回答