在 ASP.Net 核心 MVC 应用程序中使用脚手架身份页面时无法添加全局 AuthorizeFilter

Unable to add global AuthorizeFilter when using scaffolded Identity pages in ASP.Net Core MVC application

我从启用了身份的模板创建了 ASP.Net 核心 MVC 项目。

我使用更新数据库命令从迁移文件创建了数据库。

我能够运行申请、注册用户和登录。

我在全局添加了 AuthorizeFilter:

builder.Services.AddControllersWithViews(o => o.Filters.Add(new AuthorizeFilter()));

它仍然有效。

但是当我使用 Visual Studio 功能构建登录页面时,我无法再登录了。我正在重定向到“无限”循环 url:

当我删除全局 AuthorizeFilter 时:

builder.Services.AddControllersWithViews()

并将其添加到操作中:

[Authorize]
public IActionResult Index()

又能用了。

是否存在阻止将脚手架 Razor 页面与全局 AuthorizeFilter 一起使用的错误? 或者更确切地说,我做错了什么或错过了什么?

Global AuthorizeFilter 适用于您项目的每个方法,这也意味着您的登录方法。

我猜你的登录页面是用户未登录时被重定向到的页面。所以发生的事情是:

我要登录页面 => 登录页面需要授权 => 重定向到登录页面 => 登录页面需要授权 => 重定向到登录页面...

您的登录方法必须接受匿名连接,因为用户尚未登录。

在您的登录方法中添加属性 [AllowAnonymous]