.NET Core中,可以通过检查接口上的AllowAnonymous
特性来判断一个接口是否被标记为允许匿名访问。以下是一个简单的中间件示例,用于在请求管道中检查接口是否被AllowAnonymous
标记:
public class AllowAnonymousMiddleware
{
private readonly RequestDelegate _next;
public AllowAnonymousMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context, IAuthorizationService authorizationService)
{
var endpoint = context.GetEndpoint();
if (endpoint != null)
{
var allowAnonymous = endpoint.Metadata.GetMetadata<IAllowAnonymous>();
if (allowAnonymous == null)
{
// 没有AllowAnonymous属性
}
}
await _next(context);
}
}
在应用程序中使用此中间件,将其添加到 Startup.cs
文件的 Configure
方法中:
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseMiddleware<AllowAnonymousMiddleware>();
}