Comment puis-je obtenir des informations sur les utilisateurs et les réclamations à l'aide de filtres d'action?

Je fais cela pour obtenir l'information dont j'ai besoin:

Dans mon contrôleur de base:

    public int roleId { get; private set; }
    public int userId { get; private set; }

    public void setUserAndRole()
    {
        ClaimsIdentity claimsIdentity;
        var httpContext = HttpContext.Current;
        claimsIdentity = httpContext.User.Identity as ClaimsIdentity;
        roleId = Int32.Parse(claimsIdentity.FindFirst("RoleId").Value);
        userId = Int32.Parse(User.Identity.GetUserId());
    }

Dans mes méthodes de contrôleur:

    public async Task<IHttpActionResult> getTest(int examId, int userTestId, int retrieve)
    {
        setUserAndRole();

Je voulais le roleId et userId être disponible et peuplées dans le constructeur de ma classe, mais de ce que je comprends, le constructeur se déclenche avant que l'autorisation d'information est disponible.

Quelqu'un peut me dire comment je pourrais le faire avec une Action de Filtre? Idéalement, j'aimerais que l'Action de Filtre au niveau du contrôleur, mais si non, pourrait-il être fait au niveau de la méthode.

Je suis l'espoir pour certains de bons conseils et des suggestions. Merci

Mises à jour Système.Web.Http

#region Assembly System.Web.Http, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
//C:\H\server\packages\Microsoft.AspNet.WebApi.Core.5.2.2\lib\net45\System.Web.Http.dll
#endregion

using System.Threading;
using System.Threading.Tasks;
using System.Web.Http.Controllers;

namespace System.Web.Http.Filters
{
    //
    //Summary:
    //    Represents the base class for all action-filter attributes.
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
    public abstract class ActionFilterAttribute : FilterAttribute, IActionFilter, IFilter
    {
        //
        //Summary:
        //    Initializes a new instance of the System.Web.Http.Filters.ActionFilterAttribute
        //    class.
        protected ActionFilterAttribute();

        //
        //Summary:
        //    Occurs after the action method is invoked.
        //
        //Parameters:
        //  actionExecutedContext:
        //    The action executed context.
        public virtual void OnActionExecuted(HttpActionExecutedContext actionExecutedContext);
        public virtual Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken);
        //
        //Summary:
        //    Occurs before the action method is invoked.
        //
        //Parameters:
        //  actionContext:
        //    The action context.
        public virtual void OnActionExecuting(HttpActionContext actionContext);
        public virtual Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken);
    }
}

source d'informationauteur Alan2