我正在尝试使用自定义系统保护我的asp.net API。问题是我不知道怎么做。
我已经运行了一个(简单但有效的(API。我想要保护的方式是,在请求的身份验证头中应该有一个令牌。在每次与我的API连接时,都应该调用一个方法(然后该方法应该返回布尔值(。
当然,我可以很容易地在每个HttpRequest调用一个方法->但这太容易了。
我想要的方式是写";[MyCustomAuth]";(例如(在ApiController之前……
我希望你能理解我想要什么。
谢谢!
您可以在这样的场景中使用IAsyncActionFilter(https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-5.0(
示例代码:
public class CustomAuthorizeAttribute : Attribute, IAsyncActionFilter
{
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
//your custom logic...
if (//condition where user is not authenticated based on your custom logic)
{
context.Result = new UnauthorizedResult();
return;
}
await next();
}
}
你可以这样使用它:
[CustomAuthorize]
public class YourController: SomeControllerBase
{
}