title: How can I get user and claim information using action filters?
body: <p>Right now I am doing this to get the information I need:</p>
  
  <p>In my base controller:</p>
  
  <pre><code>    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());
      }
  </code></pre>
  
  <p>In my controller methods:</p>
  
  <pre><code>    public async Task&lt;IHttpActionResult&gt; getTest(int examId, int userTestId, int retrieve)
      {
          setUserAndRole();
  </code></pre>
  
  <p>I wanted the roleId and userId to be available and populated in the constructor of my class but from what I understand the constructor fires before authorization information is available.</p>
  
  <p>Can someone tell me how I could do this with an Action Filter?  Ideally I would like the Action Filter to be at the controller level but if not then could it be done at the method level. </p>
  
  <p>I am hoping for some good advice and suggestions. Thank you</p>
  
  <p><strong>Update to show System.Web.Http</strong></p>
  
  <pre><code>#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);
      }
  }
  </code></pre>