Asp.NET 身份停止在 Chrome 上运行



由于某种未知原因,我无法再在Chrome上登录自己的应用程序。

这是我登录的方式:

    [AllowAnonymous]
    [HttpPost]
    public async Task<ActionResult> Login(LoginModel model)
    {
        if (User.Identity.IsAuthenticated)
            return RedirectToAction("Index", "Home");
        if (!ModelState.IsValid)
            return View();
        var status = await signInManager.PasswordSignInAsync(model.Login, model.Password, true, false);
        switch (status)
        {
            case Microsoft.AspNet.Identity.Owin.SignInStatus.Success:
                {
                    int userId = User.Identity.GetUserId<int>();
                    if (userManager.IsFirstLogin(userId))
                    {
                        return RedirectToAction("Declaration", "Home", new { returnUrl = model.ReturnUrl });
                    }
                    return RedirectToLocal(model.ReturnUrl);
                }
            default:
                return View();
        }
    }

我调试了代码,PasswordSignInAsync成功,但是Chrome没有显示为页面设置的cookie。实际上,重定向到操作,标记为 [授权] 属性再次重定向到登录页面。

我在IE上测试了网站,一切正常,我可以登录和注销,cookie设置正确。

如果我能提供更详细的信息,请告诉我。

<小时 />

编辑:更多详细信息

我一直在测试一个对日期时间敏感的应用程序(在特定日期后停止显示(。我将系统时间更改为 2016 年 8 月 1 日,登录,然后切换回现在。那是一切停止工作的时候。

奇怪的是,当我切换回将来的时间时,我可以再次登录并且会话cookie设置正确。但是当我回到"现在"时,我无法再次登录。

仍然需要调查发生了什么,但是对我来说,"修复"是更改 Auth cookie 的名称。

在 Startup.Auth.cs:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    CookieName = $"SomeCustomNameForAuthCookie",
    Provider = ...
}); 

我怀疑我的计算机上有很多用于开发的网络,并且都具有相同的默认cookie名称。

我的应用程序中遇到了同样的问题,但就我而言,我的应用程序在 iframe 中打开,并且在登录 cookie 时未设置到浏览器中,由于发生了错误,并且大于 80 的 chrome 版本更改了 cookie 政策。我们需要在 web.config 文件中设置此代码

<httpCookies sameSite="None" requireSSL="true" />

相关内容

  • 没有找到相关文章

最新更新