Tôi có một dự án netcore 2.2 đang hoạt động, nơi tôi đã thực hiện chính sách tùy chỉnh để kiểm tra Khóa API.
Trong startup.cs tôi đang thêm chính sách này như thế này
//Add Key Policy
services.AddAuthorization(options =>
{
options.AddPolicy("AppKey", policy => policy.Requirements.Add(new AppKeyRequirement()));
});
Trong AppKeyRequonth của tôi, tôi thừa hưởng từ AuthorizationHandler và giải quyết các khóa trong các yêu cầu đến như thế này
protected override Task HandleRequirementAsync(AuthorizationHandlerContext authContext, AppKeyRequirement requirement)
{
var authorizationFilterContext = (AuthorizationFilterContext)authContext.Resource;
var query = authorizationFilterContext.HttpContext.Request.Query;
if (query.ContainsKey("key") && query.ContainsKey("app"))
{ // Do stuff
Điều này không hoạt động trong netcore 3.1
Tôi nhận được lỗi sau:
Không thể truyền đối tượng loại 'Microsoft.AspNetCore.Routing.RouteEndpoint' để nhập 'Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext'.
Cách chính xác để làm điều này trong lõi 3 trở lên là gì?
Như Kirk Larkin đã chỉ ra, cách chính xác trong .net 3.0 trở lên là tiêm IHttpContextAccessor vào trình xử lý Auth và sử dụng nó.
Câu hỏi của tôi tại thời điểm này là làm thế nào để tôi tiêm này? Tôi không thể vượt qua điều này trong startup.cs hoặc ít nhất là tôi không thấy làm thế nào.
Bất kỳ ý tưởng / gợi ý sẽ được nhiều đánh giá cao.