编辑数据时,应将数据的id存储在会话中

时间:2012-12-16 13:29:35

标签: c# asp.net-mvc asp.net-mvc-3

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

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

因为我真的很糟糕:(

3 个答案:

答案 0 :(得分:5)

有一个更好的策略:

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

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

答案 1 :(得分:0)

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

然后你必须检查:

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

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

答案 2 :(得分:0)

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

中也是如此