要跳过在ASP.NET Core中使用[AllowAnonymous]标记的身份验证,您可以使用自定义策略来实现。
首先,您需要创建一个自定义策略处理程序,它将检查是否存在[AllowAnonymous]特性并相应地更新策略要求。以下是一个示例:
using System;
using Microsoft.AspNetCore.Authorization;
public class AllowAnonymousAuthorizationHandler : AuthorizationHandler
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AllowAnonymousAttribute requirement)
{
context.Succeed(requirement);
return Task.CompletedTask;
}
}
然后,您需要在Startup.cs文件中注册此自定义策略处理程序。在ConfigureServices方法中添加以下代码:
services.AddScoped();
最后,您可以在需要跳过身份验证的控制器或操作中使用[AllowAnonymous]特性。例如:
[AllowAnonymous]
public IActionResult PublicAction()
{
// 执行一些公开的操作
return View();
}
这样,当请求到达带有[AllowAnonymous]特性的操作时,自定义策略处理程序将跳过身份验证并允许访问。
请注意,如果您需要使用自定义授权策略来控制更复杂的访问控制,您可以根据需要修改自定义策略处理程序的逻辑。