当应用程序与IIS一起运行时,用户未经过身份验证

时间:2016-09-06 13:45:02

标签: asp.net-core asp.net-core-mvc .net-core asp.net-core-1.0

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

幸运的是,他们在那个区域没有太大的变化,所以在这里我做了很小的改变,我设法转换它。当使用F5(而不是IIS)运行站点时,一切似乎都有效。 User.Identity.IsAutheticated属性为true,等等。

但是当我使用IIS运行应用程序时,登录部分似乎有效,但在此之后User.Identity.IsAutheticated为假。

要将我的应用程序发布到IIS,我按照文档(https://docs.asp.net/en/latest/publishing/iis.html

中的步骤进行操作

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

修改

为了更清楚,我正在使用Identity进行身份验证。我没有创建自定义Cookie,我使用CookieAuthencationMiddleware。我调用signInManager.PasswordSignInAsync来验证用户,我使用IUserClaimsPrincipalFactory的实现来创建ClaimsPrincipal对象。我有自定义的简单IUserStore实现来获取用户(没有FE)等。它在IIS外部运行时非常有效

1 个答案:

答案 0 :(得分:0)

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

我建议切换到使用内置的cookie中间件,您可以非常愉快地使用它,而不依赖于EF,身份或其他任何内容。

那是fully documented而我的authorization workshop使用它,所以有大量的示例代码。