gpt4 book ai didi

c# - 防伪 token 无法解密 & 防伪cookie token 和表单字段 token 在部署中不匹配

转载 作者:行者123 更新时间:2023-11-30 23:32:19 25 4
gpt4 key购买 nike

我的部署服务器有时有这个问题,这让我抓狂,因为我无法在本地主机中重现,我已经尝试在我的 web.config 中添加机器 key ,但没有成功远。

它只发生在登录页面。

我的布局:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")

</head>
<body>
<form id="__AjaxAntiForgeryForm" action="#" method="post">
@Html.AntiForgeryToken()
</form>

<div class="wcenter">
@Html.Partial("_LoginPartial")
</div>

<br />

<div class="wcenter">
@RenderBody()
</div>

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/pluginjs")
@Scripts.Render("~/bundles/customjs")
@RenderSection("scripts", required: false)
</body>
</html>

我的登录页面

@model LoginViewModel
@{
ViewBag.Title = "Log in";
}

<h2>@ViewBag.Title.</h2>
@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()

@Html.LabelFor(m => m.Username)
@Html.TextBoxFor(m => m.Username)
@Html.ValidationMessageFor(m => m.Username)

@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)

<input type="submit" value="LOGIN" />
}

Controller :

    [AllowAnonymous]
public ActionResult Login()
{
if (Request.IsAuthenticated)
{
return RedirectToAction("Index", "Home");
}

return View();
}

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (Request.IsAuthenticated)
{
return RedirectToAction("Index", "Home");
}

if (!ModelState.IsValid)
{
return View(model);
}

var user = new ApplicationUser() { UserName = model.Username, Id = model.Username };
var result = await UserManager.CheckPasswordAsync(user, model.Password);

if (result == true)
{
if (UserManager.FindByName(user.UserName) == null)
{
var res = UserManager.Create(user);

if (!res.Succeeded)
{
ModelState.AddModelError("", res.Errors.FirstOrDefault());
return View(model);
}
}

SignInManager.SignIn(user, true, true);
return RedirectToAction("Index", "Home");
}

ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}

我们将不胜感激。

最佳答案

这是因为您正在创建 2 个防伪标记,一个在表单内,另一个在您的局部 View 中。所以有时创建的 cookie CSRF 与 CSRF 输入隐藏字段不匹配

关于c# - 防伪 token 无法解密 & 防伪cookie token 和表单字段 token 在部署中不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34348830/

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