gpt4 book ai didi

c# - 在 ASP.NET MVC 5 中,框架如何知道一个 POST 请求来自它自己的网页?

转载 作者:行者123 更新时间:2023-11-30 12:21:06 26 4
gpt4 key购买 nike

请允许我更详细地解释一下。

我一直在使用 Visual Studio 2017 学习和测试 ASP.NET 的 MVC 5。据我了解, Controller 的“操作”或方法根据“RouteConfig.cs”中的路由格式进行映射,使所有Web 请求可访问的公共(public)方法。

对于返回 View 的简单 GET 方法,如下所示:

// GET: Movies/Create
public ActionResult Create()
{
return View();
}

我只需要输入正确的URL,我就获得了View。

但是在删除数据条目等合理的 POST 操作的情况下, Controller 如何确保 POST 请求是来自其自己的 View 之一而不是未知网页的有效请求?假设一个 Action 只需要映射到一个匹配的路由就可以被调用。

以微软教程中的一段代码为例:

public class MoviesController : Controller
{
private MovieDBContext db = new MovieDBContext();

/*
Bunch of Other GET Actions
*/

// POST: Movies/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Movie movie = db.Movies.Find(id);
db.Movies.Remove(movie);
db.SaveChanges();
return RedirectToAction("Index");
}

/*
Bunch of Other GET Actions
*/

}

这个 Controller 是如何做到这一点的?如果不能,如何实现?

最佳答案

这就是防伪 token 的用途,您可以通过使用 ValidateAntiForgeryToken 属性装饰操作方法来验证它。您的 View 将需要包含一个防伪 token ,以通过 @Html.AntiForgeryToken() HtmlHelper 方法

进行验证

关于c# - 在 ASP.NET MVC 5 中,框架如何知道一个 POST 请求来自它自己的网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47214353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com