微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不要更改地址中的路由器值

如何解决不要更改地址中的路由器值

我有一个带有 @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 举报,一经查实,本站将立刻删除。