0

我从启用了标识的模板创建了 ASP.Net Core MVC 项目。

我使用 update-database 命令从迁移文件创建了 db。

我能够运行应用程序、注册用户和登录。

我在全局范围内添加了 AuthorizeFilter:

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

它仍然有效。

但是当我使用 Visual Studio 功能搭建登录页面时,我无法再登录。我被重定向到“infinitelly”循环网址: 在此处输入图像描述

当我删除全局 AuthorizeFilter 时:

builder.Services.AddControllersWithViews()

并将其添加到操作:

[Authorize]
public IActionResult Index()

它再次起作用。

是否有任何错误阻止使用带有全局 AuthorizeFilter 的脚手架 Razor 页面?或者更确切地说,我做错了什么或错过了什么?

4

1 回答 1

1

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

我猜您的登录页面是用户未登录时被重定向到的页面。所以会发生什么:

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

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

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

于 2022-01-17T13:03:22.180 回答