gpt4 book ai didi

angularjs - Web Api + HTML5(无 Razor)+ Angularjs + CSRF

转载 作者:太空宇宙 更新时间:2023-11-04 13:06:54 25 4
gpt4 key购买 nike

我有一个纯 HTML5(没有 Razor ),前端是 angularjs,后端是纯 asp.net Web api。我在网络领域看到的几乎所有示例都使用内置 MVC 解决方案的 @Html.AntiForgeryToken() 来处理 CRSF。有没有一种方法可以在不使用 Razor 的 @Html.AntiForgeryToken() 的情况下实现 CRSF?

谢谢

最佳答案

正如 Scott Allen 在 Twitter 上指出的那样,您可以在此处获得完整示例:https://github.com/aspnet/Antiforgery/tree/dev/samples/AntiforgerySample

在 Startup.cs 中,他们确保将 token 附加到 cookie 中的响应,使用 Angular 的默认 header 名称发送 XSRF token :

app.Use(next => context =>
{
if (
string.Equals(context.Request.Path.Value, "/", StringComparison.OrdinalIgnoreCase) ||
string.Equals(context.Request.Path.Value, "/index.html", StringComparison.OrdinalIgnoreCase))
{
// We can send the request token as a JavaScript-readable cookie, and Angular will use it by default.
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken, new CookieOptions() { HttpOnly = false });
}

return next(context);
});

获取项目时,它们只是序列化:

if (string.Equals("GET", context.Request.Method, StringComparison.OrdinalIgnoreCase))
{
var items = repository.GetItems();
await context.Response.WriteAsync(JsonConvert.SerializeObject(items));
}

但在帖子中,他们确保验证随请求传递的 token :

// This will throw if the token is invalid.
await antiforgery.ValidateRequestAsync(context);

一个非常简约的示例,我可能会写博客/视频博客 ;-)

关于angularjs - Web Api + HTML5(无 Razor)+ Angularjs + CSRF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002264/

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