No estoy seguro de si esta es la mejor manera de hacerlo, pero quiero mantener vivo un objeto de usuario durante todas las solicitudes del usuario actual. Después de leer varios recursos, aprendí que debes crear tu propio IPrinciple que contenga esto. Pero no quiero activar la base de datos en cada solicitud de autenticación. ¿Alguna recomendación sobre cómo manejar esto? ¿El almacenamiento en caché de la solicitud de db es una buena idea?establecer usuario actual en asp.net mvc
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
User user;
using (HgDataContext hg = new HgDataContext())
{
if (Session["user"] != null)
{
user = (from u in hg.Users where u.EmailAddress == authTicket.Name select u).Single();
} else
{
user = Session["user"] as User;
}
}
var principal = new HgPrincipal(user);
Context.User = principal;
}
}
La pregunta no me parece clara. ¿Qué objeto exactamente quieres mantener vivo? En cualquier caso, el fragmento de código no logra mantener vivos los objetos, por lo que parece haber un error. Pero sin saber qué es exactamente lo que estás tratando de lograr, no puedo decir nada más. ¿Podrías por favor elaborar? –
Intento mantener mi objeto de usuario alrededor – TomHastjarjanto