【发布时间】:2019-12-12 06:28:47
【问题描述】:
redirecting 显示正在调用的页面并显示 302 错误。我该如何处理它允许我通过 API 方法重定向到页面并在凭据错误时显示错误消息。我宁愿避免使用window.location.href,因为传入 RedirectUrl 不起作用。
API 方法
[HttpPost]
[AllowAnonymous]
[Route("Login")]
public async Task<IActionResult> Login([FromForm] LoginViewModel model)
{
if (model.Username == "user" && model.Password == "password")
{
Redirect("/User/Index");
}
else return StatusCode(400, "Invalid user or password");
}
AJAX 调用
$("#loginBtn").on('click', function (e) {
e.preventDefault();
$.ajax({
url: '/api/Account/Login',
type: 'POST',
data: $('#loginForm').serialize()
})
.done(function (data) {
})
.fail(function () {
$('#errorMessage').append("Invalid username or password").show();
$('#errorMessage').removeAttr('id');
}
});
});
编辑: 根据 Athanasios Kataras 的解释,我决定改用错误消息。我想出了这个解决方案:
$("#loginBtn").on('click', function (e) {
e.preventDefault();
$.ajax({
url: '/api/Account/Login',
type: 'POST',
data: $('#loginForm').serialize()
})
.done(function (data) {
})
.fail(function () {
sessionStorage.setItem("error", "Error");
location.reload();
}
});
});
if (sessionStorage.getItem("error") != null) {
$('#errorMessage').html("Invalid username or password").show();
sessionStorage.removeItem("error");
}
【问题讨论】:
标签: javascript c# jquery ajax asp.net-core