title: How to get Email address from the principal in ASP.net?
body: <p>I am trying to get the Email associated with the current user. 
  The following shows few lines that I add Claims in authentication.</p>
  
  <pre><code>public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
      {
          var identity = new ClaimsIdentity(context.Options.AuthenticationType);
          try
          {
              CreateDataConnection();
              R_AuthenticateUser oAuthUser = oDataConnection.Authenticate(context.UserName,context.Password);
              string DB_User_roles = oAuthUser.UserLoginRoles;
  
              if (oAuthUser.Authenticated)
              {
                  string[] aray = DB_User_roles.Split(',');
  
                  identity.AddClaim(new Claim(ClaimTypes.Name, oAuthUser.UserID.ToString()));                         // keeps the login_ID
                  identity.AddClaim(new Claim(ClaimTypes.Email, context.UserName));
  
                  foreach (var item in aray)
                  {
            //          identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, item));
                      identity.AddClaim(new Claim(ClaimTypes.Role, item));
                  }
                  context.Validated(identity);
              }
              else //if (context.UserName == "user" &amp;&amp; context.Password == "user")
              {
                  context.SetError("Incorrect credntials", "Provided Username and Password is incorrect");
                  return;
              }
          }
          catch (Exception ex)
          {
              int y = 0;
          }
      }
  </code></pre>
  
  <p>In my controllers currently, I read UserID associated with the user as follows?</p>
  
  <pre><code>[HttpGet]
  [PGAuthorization(Roles = "USER")]
  [Route("api/Address/GetAllAddresses")]
  public string GetAllAddressesByUser()
  {
      CreateDataConnection();
      Int64 UserID = Convert.ToInt64((User as ClaimsPrincipal).Identity.Name);
      List&lt;R_CustomerAddress&gt; oUser = oDataConnection.GetAllAddressesByUser(UserID);
      string output = JsonConvert.SerializeObject(oUser);
      return output;
  }
  </code></pre>
  
  <p>But now I need to get the UserID using Email which I have added in authentication. I tried using</p>
  
  <pre><code>Int64 UserID = Convert.ToInt64((User as ClaimsPrincipal).Identity.Email);
  </code></pre>
  
  <p>but it does not work. Could someone help me with that ? </p>