当应用程序是 运行 IIS 时,用户未通过身份验证

User is not authenticated when the app is running with IIS

我正在将旧的 dnx beta4 MVC 应用程序转换为新的 ASP.NET Core 1.0。我有一个简单的基于 cookie 声明的身份验证和自定义用户查找(没有 EF),它工作得很好。

幸运的是,他们在那方面没有太大变化,所以在这里和那里做了一些小改动,我设法将它转换了。当 运行 使用 F5(不是 IIS)连接站点时,一切似乎都正常。 User.Identity.IsAutheticated 属性 为真等

但是当我 运行 使用 IIS 的应用程序时,登录部分似乎可以工作,但在那之后 User.Identity.IsAutheticated 是错误的。

为了将我的应用程序发布到 IIS,我遵循了文档中的步骤 (https://docs.asp.net/en/latest/publishing/iis.html)

有什么想法可能是什么问题吗?

编辑

为了更清楚一点,我使用身份进行身份验证。我不创建自定义 cookie,我使用 CookieAuthencationMiddleware。我调用 signInManager.PasswordSignInAsync 来验证用户,我使用 IUserClaimsPrincipalFactory 的实现来创建 ClaimsPrincipal 对象。我有自定义的简单 IUserStore 实现来获取用户(无 FE)等。当 运行 在 IIS 之外

时它完美地工作

可能是您的身份验证有问题。如果您正在编写自己的 cookie,读取它并验证它,那么您需要移动到身份验证中间件,然后在 HttpContext 身份验证功能上使用 SignInAsyncSignoutAsync

我建议改用内置的 cookie 中间件,您可以非常愉快地使用它,而无需依赖 EF、Identity 或其他任何东西。

fully documented and my authorization workshop使用它,所以有很多示例代码。