如何解决不要更改地址中的路由器值
我有一个带有 @ActionLink 的页面(索引),可以打开另一个页面来编辑发票,页面将正确显示,但 [Url-address] 显示发票编号,而当我在[Url-address]中更改发票的编号时,意味着他打开了另一张发票,我希望修改页面不要从通过修改[Url -address] 或使用直接链接,我找到了一个不错的方法,但它用于 [Post] 而不是 Get。有没有办法保护页面的 [Url-address] 不被修改及其值?
查看索引:
@Html.ActionLink(
linkText: "Edit_Invoice",actionName: "Invoice_Edit",controllerName: "Invoice",routeValues: new { ID_Invoice = 2 },htmlAttributes: new { area = "Pro"})
控制器:
[HttpGet]
public ActionResult Invoice_Edit(int id_invoice)
{
Table.Invoice invoice = (from i in Cn.Invoice
where i.ID_Invoice == id_invoice
select i).FirstOrDefault();
return View(invoice;
}
查看发票_编辑:
@Html.TextBoxFor(m => m.ID_Invoice)
@Html.TextBoxFor(m => m.Date_Invoice)
<button>save</button>
https://localhost:44320/Pro/Invoice/Invoice_Edit?ID_Invoice=2
我只想打开从页面中选择的发票。
更新 1:更改标题答案
解决方法
如果你什么用户只打开他们被允许打开的发票,防伪令牌与它无关。您需要服务器端验证、身份验证和授权。所有这些都应该在服务器端实现。客户端 javascript 代码是不够的。
防伪令牌对于您不修改和保留数据的任何请求没有多大意义。因此,我建议从您的 GET 中删除 [ValidateAntiForgeryToken],因为 GET 请求将返回给用户,而不是攻击者。
AntiForgeryToken 是为 POST 请求而设计的,它需要 Request.Form 集合中的令牌。您可以只使用 post 而不是 get 来接收数据。或者你可以使用ajax。谷歌,你会找到一些例子。
但请确保在创建、更新或删除数据时使用它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。