在 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]。
我从启用了身份的模板创建了 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]。