我正在尝试使用javascript将用户重定向到控制器操作,并且我一直在获取未经授权的响应
Java脚本代码如下
var instance = axios.create({
baseURL: this.baseUrl, headers: {'X-Requested-With': 'XMLHttpRequest'},
});
instance.post('Account/Login', d)
.then(function(resonse){
console.log(resonse);
window.location = this.baseUrl + 'live';
}).catch(function(response){
console.log(response);
window.location.href = this.baseUrl +'Account/Login';
}.bind(this));
我的登录例程实现如下
if (HttpContext.Request.IsAjaxRequest())
{
if (!ModelState.IsValid)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest,
"A valid Email address and password is required");
}
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
{
return RedirectToAction("Index", "Live");
}
case SignInStatus.LockedOut:
return new HttpStatusCodeResult(HttpStatusCode.Unauthorized, "Account is disabled at the moment");
case SignInStatus.RequiresVerification:
return new HttpStatusCodeResult(HttpStatusCode.Unauthorized, "Email address requires confirmation");
case SignInStatus.Failure:
default:
return new HttpStatusCodeResult(HttpStatusCode.Unauthorized, "Invalid Log in Attempt");
}
}
我尝试重定向的操作方法如下
[Authorize]
public class LiveController : Controller
{
[Route("live")]
public ActionResult Index()
{
return View();
}
}
现在我的问题是,当身份验证成功并且我尝试重定向到/ live url时,即使身份验证成功,我仍然会收到来自服务器的未经授权的响应。
答案 0 :(得分:0)
确保正在设置.ASPXAUTH
(或者如果您自定义名称,则为其调用的任何内容)cookie。这真的是唯一能让你在认证后看起来没有经过验证的东西。 AJAX请求应支持服务器设置cookie,但可能会有一些奇怪的事情发生。
那就是说,如果您要做的就是立即重定向,那么通过AJAX登录真的没有意义。您可以轻松地使用returnUrl
执行标准帖子并获得相同的效果,并且这肯定会在100%的时间内起作用。