C# asp.net project functionalities
I think you can simply create a method (or even a property) in your master page, and use it in your pages to follow and adhere to the principal of DRY (Do not repeat yourself). Also in master page function (or property), you can use caching by a hidden class field, to make the performance even better. For example in your master page:

private User user;
public User User
{
   get
   {
       if (user == null)
       {
          // Load user and assign it to the user field
          user = LoadUser(HttpContext.Current.User.Identity.Name);
       }
       return user;
   }
}


Then in your pages, you can refer to your master page, by casting it to the type of your master page. For example, if the name of the master page class is GeneralMaterPage, then in a page using that master page, you can write:

public Page_Load(Object sender, EventArts e)
{
    User user = (MasterPage as GeneralMasterPage).User;
}


This way, you've implemented user extraction and loading code in one place. However, there is a better method for that. 

You can write an HTTP Module and bind to AuthenticateRequest event, and do the authentication mechanism yourself. Then, if the user is valid, you can simply create a GeneralPrincipal including the real user name and populate HttpContext.Current.User with that principal.

Take a look at this link.