Injecter en Action le service de Filtre

Je suis en train d'injecter un service dans mon action de filtre mais je ne suis pas d'obtenir les services requis injecté dans le constructeur. Voici ce que j'ai:

public class EnsureUserLoggedIn : ActionFilterAttribute
{
    private readonly ISessionService _sessionService;

    public EnsureUserLoggedIn()
    {
        //I was unable able to remove the default ctor 
        //because of compilation error while using the 
        //attribute in my controller
    }

    public EnsureUserLoggedIn(ISessionService sessionService)
    {
        _sessionService = sessionService;
    }

    public override void OnActionExecuting(ActionExecutingContext context)
    {
        //Problem: _sessionService is null here
        if (_sessionService.LoggedInUser == null)
        {
            context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            context.Result = new JsonResult("Unauthorized");
        }
    }
}

Et je suis la décoration de mon contrôleur comme suit:

[Route("api/issues"), EnsureUserLoggedIn]
public class IssueController : Controller
{
}

De démarrage.cs

services.AddScoped<ISessionService, SessionService>();
  • Les attributs de décorations permet seulement des valeurs constantes. Je suppose que vous devez résoudre votre service dans le constructeur par défaut.
  • Je ne suis pas sûr de savoir comment cela est possible dans ce scénario.
  • Jetez un oeil ici, je suppose que vous avez seulement besoin d'un décorateur
  • J'ai une solution qui fonctionne pour ce - que je suis à jour pour ASP.NET de Base. J'espère que je vais avoir quelque chose dans quelques minutes.
  • Au lieu de tenter d'injecter des services dans les attributs, écrire passive attributs.
  • Vous ne devriez pas mettre en œuvre vos propres filtres ou les attributs d'autorisation autorisation/de la politique. C'est ce que la politique du générateur et de la Politique de la propriété de AuthoirzeAttribute. Voir cette réponse à partir d'un ASP.NET Développeur responsable de la sécurité des pièces de ASP.NET Core stackoverflow.com/a/31465227/455493

InformationsquelleAutor hyde | 2016-03-20