Обратите внимание на изменение имени: например, имя глобальной переменной для IAuthorizationService _authorization
имеет префикс с подчеркиванием.Очевидно, не требуется, но, как хорошее практическое правило / хороший стандарт кодирования, IMO.: -)
public class LRController : Controller
{
private readonly IAuthorizationService _authorization;
// you're missing this constructor & this pattern is known as Constructor Dependency Injection
public LRController(IAuthorizationService authorization)
{
_authorization = authorization;
}
public async Task<RedirectToActionResult> Index()
{
var superAdmin = await _authorization.AuthorizeAsync(User, "IsLucky");
//rest of your code here
}
}
РЕДАКТИРОВАТЬ
Кроме того, если вы хотите / должны добавить другие интерфейсы в этот контроллер, вы бы добавили его в конструктор LRController.Выглядело бы примерно так:
public class LRController : Controller
{
private readonly IAuthorizationService _authorization;
private readonly IOtherService _otherService;
public LRController(IAuthorizationService authorization, IOtherService otherService)
{
_authorization = authorization;
_otherService = otherService;
}
public async Task<RedirectToActionResult> Index()
{
var superAdmin = await _authorization.AuthorizeAsync(User, "IsLucky");
}
public async Task Foo()
{
await _otherService.Bar();
}
}