在dev中运行时未在Google Chrome中设置ASP.net核心身份验证cookie

问题描述 投票:11回答:2

我的解决方案中有三个应用程序,全部内置在asp.net核心1 MVC 6中。

  • App 1是用于验证用户身份的MVC应用程序。
  • 应用程序2是Angular SPA应用程序,是解决方案中的主要应用程序。
  • App 3是MVC Web API应用程序。

在应用程序3中,我具有通常的asp.net核心SignInManager和UserManager代码(与启动新MVC 6模板时默认情况下获得的代码相同-唯一的不同是,它存在于我的Web api中)。登录/注销/注册等通过我的AccountController中的Web api方法公开。这使我可以锁定Web api,以便仅处理经过身份验证的请求(使用[Authorize]属性)。

[当我在AccountController中调用“ Login”方法时,如果登录成功-它返回一个Set-Cookie指令,其名称如下:“ .AspNet.Microsoft.AspNet.Identity.Application”(用于身份验证)

然后登录应用程序将用户从App1转发到App2。然后,对Web api(App3)的所有后续请求都将经过身份验证并允许执行。注意:通过后续请求-特别是在App2中,我的意思是通过角度调用从Web服务中请求数据。

[所有这些都工作正常-很好,它在IE中工作正常。这让我想到了一个问题,为什么这在Chrome中不起作用?我看到Chrome中的Web api Login登录响应返回了“ Set-Cookie”指令,但后续请求没有附加此Cookie。

我在做什么错?

注意:我从登录方法获得的Http响应如下所示:

    HTTP/1.1 200 OK
        Cache-Control: no-cache
        Pragma: no-cache
        Content-Type: application/json; charset=utf-8
        Expires: -1
        Server: Kestrel
        Set-Cookie: .AspNet.Microsoft.AspNet.Identity.Application=CfDJ8FWIuvXs-TxKoIYE8259iAY52B_VZDPTTvYwZ-WAo8hhPCdLhmUfxNZD1wjxEt0sqqnZl6NomwHPNTNFkBxsq4cw_WkQYklnj_dK79wodIguLdPXAbKu6UbS6HKRBxFxjOKVAfIdyxZJ6xA2CtnR9nJC_CSg7v1vFSzgDEiSBso8D3aDNjzFk8
7oIJodC7WLVxWUqdUpjaGRCXqHTYjTwgL9DCihnajAlB921_oEPinUwIPP8g_ugCQmqbFq6kgQ-GwPTifBKRlbtwNsDwbetynl1gIqzELyjgEUAKgtpD9SX7FSjl1grxoGRjbPiXJe-k1SSdnUIHR7wYPkFpiis_c_P1pGkmSyeiDG-lf0xftTlXlnC3BWMbgXeWZn_hsDzbW_Tek3qiq_NB-T0IMGaJgjRnr5DARNcOACWbzwGvHFjsn7n0u7-UZOfzgQJ76d3ra-hjra
    -aNcHLgbfDef3TK6z_CKt2iIlnTkyEJXC-3OSGnfWDRvofvQ216UApEPiKoJxiCjWSvGAQCzvf9P1TtKuwAQVxfWz8pL077E-Wfc-4ybtrT6Ivz2VbdFng5Ze5IQ5YWfYYTpDhLSHGKnpFgxVf96f7JwoXlgRq0gs7yEWdWFZs6d18pw-El5sLJr7g; path=/; secure; httponly
        Access-Control-Allow-Origin: *
        X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcUm9iZXJ0XERlc2t0b3BcSEJFIE1hbmFnZXJcTUFJTlxCbHVlem9uZSBXZWJBcGlcc3JjXEJ6LkFwcGxpY2F0aW9uXEJ6LkFwcGxpY2F0aW9uLkFwaVx3d3dyb290XGFwaVxhY2NvdW50XExvZ2lu?=
        X-Powered-By: ASP.NET
        Date: Wed, 04 May 2016 10:39:57 GMT
        Content-Length: 16
google-chrome cookies asp.net-core-mvc claims-based-identity
2个回答
0
投票

我也遇到了同样的问题,它在IE,Edge中有效,但在Chrome,Firefox和Opera中却无效。

这似乎是cookie大小的问题,我解决了减少cookie中的数据的问题。

请参阅此以了解大小限制:chrome cookie size limit


0
投票

嗨,我也有这个问题。

虽然我在VS中的localhost环境运行良好,可以登录我的用户,但在chrome的已发布环境中无法使用。

这开始于我在生产前环境中尝试在IIS上使用一些自签名证书的东西,方法是使用已配置的绑定在https上涂满Turin。然后,我返回到http。

您可以在Chrome中尝试的方法是:打开开发人员工具的“转到”选项卡应用程序,然后在左窗格中选择清除存储空间。即使用法显示使用的0字节,在右图下单击清除站点数据。无论如何都要做。

最后我得到了具有登录功能的应用程序。

希望这也会对某人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.