首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在身份验证处理之后,Chrome不会重定向回URL

在身份验证处理之后,Chrome不会重定向回URL
EN

Stack Overflow用户
提问于 2020-02-12 21:12:29
回答 1查看 2.9K关注 0票数 3

至少几年来,我在MVC解决方案中一直使用类似于此的代码。

代码语言:javascript
运行
复制
[Authorize]
public class HomeController : Controller
{
    [HttpGet]
    public ActionResult Index()
    {
          ..........

然后在我的认证代码中

代码语言:javascript
运行
复制
myAuthenticationProperties = new Microsoft.Owin.Security.AuthenticationProperties();
myAuthenticationProperties.AllowRefresh = true;
myAuthenticationProperties.ExpiresUtc = DateTime.UtcNow.AddMinutes(60); 
myAuthenticationManager.SignIn(myAuthenticationProperties, myClaimsIdentity);

return RedirectToAction("Index", "Home");

在我创业的时候..。

代码语言:javascript
运行
复制
    public void Configuration(IAppBuilder app)
    {
        CookieAuthenticationOptions myAuthOptions = new CookieAuthenticationOptions();
        myAuthOptions.AuthenticationType = "ApplicationCookie";               
        myAuthOptions.CookieHttpOnly = true; 
        myAuthOptions.SlidingExpiration = true; 
        myAuthOptions.LoginPath = new PathString("/Authentication/LogIn");

        //This is what was added for the Owin cookie "fix"
        myAuthOptions.CookieSameSite = SameSiteMode.Strict;                                 
        myAuthOptions.CookieSecure = CookieSecureOption.Always;


        app.UseCookieAuthentication(myAuthOptions);
    }

生活一直很美好..。直到现在。我一直在到处追逐我的尾巴,试图找出为什么当我尝试登录时,有时它会工作,而另一些时候,它只是挂起。使用一些调试消息,我发现我的身份验证过程已经完成,但是当RedirectToAction发生时,什么也不会发生。挂着就行。

然后我有了一个突破,我试着使用IE和Edge,它似乎每次都起作用。只有Chrome挂起,如果不是更多的话,它至少有75%的时间会挂起。

**更新**

我已经使用了Fiddler和Chrome的调试(控制台和网络标签)和当RedirectToAction发生,就网站而言,它是这样做的。然而,没有什么,我没有任何意义,回到我的客户(根据Fiddler和Chrome的网络)的网络。

然而,如果我手动更改url回家,Chrome是快乐的,我现在已经通过认证,我的授权现在允许加载控制器。

我已经研究了新的Chrome问题,虽然“修复”看起来像泥浆一样清晰,但我还是找到了一个使用代码强迫SameSite cookie报告其他内容的人。我实现了它,实际上它被设置为“严格的”并且仍然..。铬挂。

**乐队-援助**

我不知道这会给我带来多少时间,但我使用Javascript计时器解决了这个问题,当用户单击submit按钮时,计时器启动,等待6秒,然后重定向回Home/Index。

如果问题不存在(IE,Edge),客户端会在计时器有机会掌握之前自动重定向。如果他们正在使用Chrome,它决定挂起,6秒后,它将表现得好像他们的浏览器只是缓慢,也会带他们到正确的地方。

**固定(可能) **

因此,即使没有网络流量返回到客户端,我最终还是(除了上面的创可贴)实现了一些额外的更改,所以现在Owin和Asp.net cookie都报告了安全和sameSite =严格。这似乎对我的问题有很大的影响,如果它还想挂,我的定时重定向就会解决这个问题。

对于那些可能也经历过这种怪事的人来说,饼干修复的要点是.

  1. 更新您自己的包,以确保您使用的是4.1版本
  2. 将您在CookieAuthenticationOptions中的Startup.cs调整为我前面添加的项,以使Owin兼容。
  3. 更新Web.config中的以下内容,使您的Asp.net cookie兼容

做这三件事(以及在SSL下运行您的项目)将导致Chrome报告cookies既安全又严格。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-12 21:50:17

谷歌在没有SameSite属性的情况下对SameSite做了修改。在此之前,Chrome将不将SameSite属性设置在cookie上与使用SameSite=None一样处理,这意味着浏览器将接受所有cookie。现在,他们把它当作拥有SameSite=Lax,它只接受来自同一个域的cookie。要获得与旧方法相同的效果,必须将属性设置为SameSite=None; Secure

我不知道这是否对你有影响,但如果是这样,你会在Chrome控制台上看到一个错误。

官方发布的是2月4日的IIRC,但他们正在分阶段推出,以判断正在引发的问题。

一些资源:

微软ASP.NET关于即将到来的变化的博客 / 存档副本

铬博客 / 存档副本

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60196931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档