在ASP.NET MVC(缺省路由),我想使用URL这样的返回与表单视图编辑顾客:在ASP.NET MVC中比隐藏表单字段更安全吗?
/Customers/Edit/5
我需要利用CustomerId=5
,但我不希望允许客户改变it.Right现在我做隐藏ID使用:
<%= Html.Hidden("CustomerId") %>
这实现了我想要的东西,但我的印象就是那个隐藏的表单变量是不安全的,可以由最终用户操纵。
那么,允许客户编辑他们的信息而不是他们的ID的最佳方式是什么?
我看到如何配置控制器操作,以便只有授权用户才能看到特定ID的视图,但我看不到如何防止用户更改该ID。例如,用户可能被授权查看/ Customers/Edit/10,但是他们可以在提交表单时更改ID并编辑他们未被授权查看的ID(例如/ Customers/Edit/11)。我想我需要检查提交的表单,以确保ID是我发送给他们的第一位。 – royco 2009-04-20 05:37:58
您必须检查当前登录的用户是否有权查看/编辑所请求的ID。因此,在您的控制器操作中,您检索用户名(例如使用Thread.CurrentPrincipal.Identity.Name),并检查您的数据库是否允许此用户执行他尝试执行的操作(根据请求的操作查看或编辑)。因此,如果用户更改了ID,他仍然无法查看\编辑他不允许的内容。实际上,他甚至没有理由尝试改变ID ... – 2009-04-20 07:32:13