Estaba haciendo una pregunta relacionada pero arruiné el título y nadie lo entendería. Como ahora puedo hacer la pregunta con mayor precisión, decidí reformularla en una nueva pregunta y cerrar la anterior. Lo siento por eso.¿Por qué es nulo el Usuario (como en User.Identity.Name) en mi controlador base abstracto?
Entonces, lo que quiero hacer es pasar datos (el apodo de mi usuario personalizado almacenado en el archivo db) al LoginUserControl. Este inicio de sesión se representa desde la página maestra a través de Html.RenderPartial(), así que lo que realmente necesito hacer es asegurarme de que, digamos ViewData ["UserNickname"] esté presente en cada llamada. Pero no quiero poblar ViewData [ ""] UserNickname en todos y cada acción de cada controlador, por lo que decidí usar this approach y crear un controlador de base abstracta que va a hacer el trabajo para mí, así:
public abstract class ApplicationController : Controller
{
private IUserRepository _repUser;
public ApplicationController()
{
_repUser = RepositoryFactory.getUserRepository();
var loggedInUser = _repUser.FindById(User.Identity.Name); //Problem!
ViewData["LoggedInUser"] = loggedInUser;
}
}
De esta manera, cualquiera que sea mi controlador derivado, la información del usuario ya estará presente.
Hasta ahora, todo bien. Ahora para el problema:
No puedo llamar a User.Identity.Name porque User
ya es nulo. Este no es el caso en todos mis controladores derivados, así que esto es específico para el controlador base abstracto.
Estoy estableciendo el User.Identity.Name a través de FormsAuthentication en otro lugar del código, pero creo que este no puede ser el problema: un Usuario de User.Identity.Name puede ser nulo, pero no el Usuario en sí.
Me parece que el HttpContext no está disponible (ya que también nulo ;-) y que me falta un punto simple pero importante aquí. ¿Alguien puede darme algunas pistas? Yo realmente lo apreciaría.
Extraño, porque 'Usuario' es nulo pero' System.Web.HttpContext.Current.User' no lo es. MVC 1.0 –