title: Is there a way to get Current User in Api Controller
body: <p><a href="https://i.stack.imgur.com/bGMg2.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/bGMg2.jpg" alt="this what i got in Claims shown in the picture"></a>i am using  asp.net Authorization to log in with Angular js for client side ,i need to get Current user logged in</p>
  
  <p>i need to get current User to save any operation in my logger Table,
  and httpcontext.session.current is null ,
  is there is another way to save logged in user in session or some thing else to get it anytime </p>
  
  <pre><code>public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider
  {
      private readonly string _publicClientId;
  
      static ERPV02_03Entities db;
  
      public ApplicationOAuthProvider(string publicClientId)
      {
          if (publicClientId == null)
          {
              throw new ArgumentNullException("publicClientId");
          }
          db = SingleTonConText.Instance;
  
         _publicClientId = publicClientId;
      }
  
      public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
      {
          var userManager = context.OwinContext.GetUserManager&lt;ApplicationUserManager&gt;();
  
          ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password);
  
          if (user == null)
          {
              context.SetError("invalid_grant", "The user name or password is incorrect.");
              return;
          }
  
          ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager,
          OAuthDefaults.AuthenticationType);
          ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager,
          CookieAuthenticationDefaults.AuthenticationType);
  
          AuthenticationProperties properties = CreateProperties(user.UserName);
          AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
          context.Validated(ticket);
          context.Request.Context.Authentication.SignIn(cookiesIdentity);
  
  
  
      }
  
      public  override Task TokenEndpoint(OAuthTokenEndpointContext context)
      {
          foreach (KeyValuePair&lt;string, string&gt; property in context.Properties.Dictionary)
          {
              context.AdditionalResponseParameters.Add(property.Key, property.Value);
  
          }
          var data= Task.FromResult&lt;object&gt;(null); 
          return data;
      }
  
      public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
      {
          // Resourcee owner password credentials does not provide a client ID.
          if (context.ClientId == null)
          {
              context.Validated();
          }
  
          return Task.FromResult&lt;object&gt;(null);
      }
  
      public override Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context)
      {
          if (context.ClientId == _publicClientId)
          {
              Uri expectedRootUri = new Uri(context.Request.Uri, "/");
  
              if (expectedRootUri.AbsoluteUri == context.RedirectUri)
              {
                  context.Validated();    
      }
          }
  
          return Task.FromResult&lt;object&gt;(null);
      }
  
      private static View_Emps GetUserInfo(string username)
      {
          var user = new View_Emps();
          try
          {
  user = db.View_Emps.FirstOrDefault(p =&gt; 
                                         p.Emp_UserName == username);
      HttpContext.Current.Session.Add("user", user);
  
  
          }
          catch (Exception e)
          {
              throw e;
          }
  
  
          return user; 
      }
  
      public static AuthenticationProperties CreateProperties(string userName)
      {
          var user = GetUserInfo(userName);
          JavaScriptSerializer js = new JavaScriptSerializer();
              var res = js.Serialize(user);
          IDictionary&lt;string, string&gt; data = new Dictionary&lt;string, string&gt;
          {
              { "User", res }
          };
  return new AuthenticationProperties(data);}}
  
  
  public  void SaveLog( T Obj, string Operation)
      {
  
  
  
          string hostName = Dns.GetHostName(); // Retrive the Name of HOST  IpAddress
          string myIP = Dns.GetHostEntry(hostName).AddressList[0].ToString();
  
          var user = HttpContext.Current.Session["user"] as View_Emps;
          MyLogger.Data =  new JavaScriptSerializer().Serialize(Obj);
          MyLogger.OperationType = Operation;
          MyLogger.TableName = typeof(T).Name;
          MyLogger.DateTime = DateTime.Now;
          MyLogger.User_ID = user.Emp_ID;
          MyLogger.IP_Address = myIP;
          db.Loggers.Add(MyLogger);
          Commit();
  
  
  
      }
  </code></pre>