title: ASP Identity FindByIdAsync implementation if I don't store Id value in my database
body: <p>So I have a custom UserStore implement IUserStore for my MVC5 project, but I don't save the Id value in my database. So when I implement FindByIdAsync, I just create a new instance of my TUser and pass it as result. I don't have any problem so far, but is this safe? I don't want this hack to bite me later.</p>
  
  <p>My UserStore: </p>
  
  <pre><code>public Task&lt;TUser&gt; FindByIdAsync(string userId)
  {
  
      TUser user = (TUser)Activator.CreateInstance(typeof(TUser));
      user.UserName = userId;
      user.Password = null;
  
      //I'm suppose to query the database with userId parameter here
  
      return Task.FromResult&lt;TUser&gt;(user); //return as is
  }
  
  public Task&lt;TUser&gt; FindByNameAsync(string userName)
  {
      TUser user = (TUser)Activator.CreateInstance(typeof(TUser));
      user = usertable.GetUserByUserName(userName);
  
      return Task.FromResult&lt;TUser&gt;(user);
  }
  </code></pre>
  
  <p>My Identity</p>
  
  <pre><code>public class IdentityUser : IUser
  {
  
      public IdentityUser()
      {
          _id = Guid.NewGuid().ToString();
      }
  
      private string _id;
      public string Id {
          get { return _id; }
      }
      public string UserName { get; set; }
      public virtual string Password { get; set; }
      public virtual string Email { get; set; }
  }
  </code></pre>
  
  <p>UPDATE : By safe, I mean that I would have no problem implementing other UserStore interface later because when I debug my code, I found that FindByIdAsync method is getting called on SignInManager.PasswordSignInAsync.</p>