首页 > 解决方案 > 如何在 vue js 中接收从 asp.net mvc 发送的 XSRF-TOKEN?

问题描述

在后端,我使用了 asp.net Web API,我可以通过比较隐藏字段令牌和 cookie 令牌来验证令牌,如下所示:

try
{
  string cookieToken, formToken;
  AntiForgery.GetTokens(null, out cookieToken, out formToken);

  CookieHeaderValue cookie = Request.Headers
                                    .GetCookies(AntiForgeryConfig.CookieName)
                                    .FirstOrDefault();
  if (cookie != null)
  {
    Stream requestBufferedStream = Request.Content.ReadAsStreamAsync().Result;
    requestBufferedStream.Position = 0;
    NameValueCollection myform = Request.Content.ReadAsFormDataAsync().Result;
    try
    {
      AntiForgery.Validate(cookie[AntiForgeryConfig.CookieName].Value,
       myform[AntiForgeryConfig.CookieName]);
    }
    catch (Exception ex)
    {
      throw new HttpResponseException(
       new HttpResponseMessage(HttpStatusCode.Unauthorized));
    }
  }
}

但是我无法使用 Vue 在前端创建 XSRF 令牌?如何在前端创建此 XSRF 验证令牌,以便稍后将它们发送回后端进行验证。

在这里,我的后端和前端项目是独立的项目。

有人在吗...

标签: c#asp.netvuejs2asp.net-web-api2vuex

解决方案


XSRF 令牌必须在后端创建并存储在 cookie 或前端的本地存储中。

检查 MS 文档以查看 vainilla javascript 和 angular 中的示例(Vue 必须相似)https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery?view=aspnetcore-2.2 #javascript-ajax 和水疗中心


推荐阅读