ASP.NET Core 3.1 [Authorize] 属性重定向到登录,即使是登录用户

Vla*_*tov 0 c# asp.net-identity asp.net-core asp.net-core-middleware

我有一个 ASP.NET Core 沙箱项目。我已经添加了IdentityDbContext。注册页面工作正常。登录/注销页面工作正常。(可以通过为SignInManager.IsSignedIn(User)用户显示的html看到)

我有一个控制器标有[Authorize]

[Authorize]
public class MyTestController : Controller
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我第一次尝试导航到它时 - 它工作正常(重定向到登录页面)

但成功登录后,它再次重定向回使用相同链接登录: https://localhost:44359/Identity/Account/Login?ReturnUrl=%2FMyTest

这是我的代码Startup.cs

[Authorize]
public class MyTestController : Controller
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

以前,我为登录、注销、注册添加了脚手架身份项。没有[Authorize]工作良好的控制器。

Kia*_*aha 10

在我看来,您的中间件的顺序不正确。ASP.NET 需要知道用户是否首先通过身份验证,以便确定它是否有权进行请求。尝试交换这两个:

    app.UseAuthentication();
    app.UseAuthorization();
Run Code Online (Sandbox Code Playgroud)

微软关于这个主题的文档:配置身份