【发布时间】:2020-07-23 15:59:14
【问题描述】:
我为 ASP.NET Core 3.1 Web API 中的 HTTP 请求验证创建了一个操作过滤器。
不幸的是,它不起作用。问题必须在控制器级别,因为在 .NET Framework 中也是如此。
CustomAuthorize.cs
public class CustomAuthorize : ActionFilterAttribute
{
private readonly IConfiguration _configuration;
public CustomAuthorize(IConfiguration configuration)
{
_configuration = configuration;
}
public override void OnActionExecuting(HttpActionContext context)
{
string secrect = _configuration.GetSection("AuthJWT").GetSection("Secrect").Value;
var request = context.Request.Headers.GetValues("AuthJWT").FirstOrDefault();
//Add Validation code here
base.OnActionExecuting(context);
}
}
HomeController
[Route("[controller]")]
[ApiController]
[ServiceFilter(typeof(CustomAuthorize))]
public class HomeController : ControllerBase
{
[HttpGet("getdata")]
public IActionResult GetData()
{
return Ok("Success");
}
}
Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddControllers();
services.AddScoped<CustomAuthorize>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
【问题讨论】:
-
我们需要看到过滤器的完整代码和验证码至少相关部分......
-
它是如何“不工作”的......我们需要能够重现这一点。所以你需要为一个完全可重现的例子发布足够的代码和信息
标签: c# asp.net-core webapi