Если вы используете FormsAuthentification, вы можете закодировать некоторые пользовательские данные в вашем cookie / билете помимо UserName.Но вы должны вручную создать FormsAuthenticationTicket и установить для свойства UserData идентификатор пользователя во время входа в систему.Таким образом, вы можете иметь как UserName & UserId.
// during login
var authCookie = FormsAuthentication.GetAuthCookie(userName, createPersistentCookie);
var ticket = FormsAuthentication.Decrypt(authCookie.Value);
// preserve data in your configuration
var ticketWithId = new FormsAuthenticationTicket(
version: ticket.Version,
name: ticket.Name,
issueDate: ticket.IssueDate,
expiration: ticket.Expiration,
isPersistent: ticket.IsPersistent,
userData: userId);
authCookie.Value = FormsAuthentication.Encrypt(ticketWithId);
_context.Response.Cookies.Add(authCookie);
Тогда вы можете иметь метод расширения для классов Controller или HttpContext:
public int? GetUserId(this Controller controller) {
var identity = (FormsIdentity)controller.User.Identity;
int id;
if (int.TryParse(identity.Ticket.UserData, out id))
return id;
return null;
}
Но если вам не нужны оба UserId& Данные UserName для вашего пользователя, чем HttpContext.User.Identity.Name
или Controller.User.Identity.Name
будет иметь имя пользователя для вашего текущего пользователя