2012-07-25 20 views
7

Estoy trabajando en MVC3 Application with Razor. En mi controlador de cuenta después de validar al usuario, estoy obteniendo el usuario ClientID de la base de datos. Aquí quiero persistir ClientID en la variable de sesión. que estaba usando en todo el controlador y la vista Razor.¿Cómo persistir los datos utilizando la variable de sesión en la vista de maquinilla mvc3?

No tengo idea de cuál es la mejor manera de implementar esto.OR Cómo persistir los datos en la variable de sesión. Y cómo usar datos persistentes en la variable de sesión en todo el controlador.

Gracias por su ayuda ..

+0

Esto podría ser útil http://www.hanselman.com/blog/TroubleshootingExpiredASPNETSessionStateAndYourOptions.aspx – ManirajSS

Respuesta

2

Si utiliza la autenticación de formularios ASP.NET, el nombre de usuario está guardada en una cookie. Puede acceder a él desde el controlador a través de

Controller.User.Identity.Name 

Es posible almacenar la identificación de usuario como nombre de usuario. Cuando llamas a algo como

FormsAuthentication.RedirectFromLoginPage 

Dale el ID en lugar de un nombre. La identificación se puede encontrar utilizando el método anterior y no se necesitan datos de sesión adicionales. Si desea almacenar algo en la sesión, simplemente llame al

Session["UserID"] = value; 

Desde su controlador.

+0

Gracias por su respuesta .. En realidad estamos implementando acceso al inquilino para Multi nuestro Marco. Así que estoy un poco confundido acerca de la persistencia de datos en el controlador. Entonces, ¿puedes sugerirme cuál es el mejor enfoque? – user10489

18

Suelo escribir un envoltorio de sesión que me permite un fácil acceso a ella en el futuro:

public class SessionData 
{ 
    const string ClientId_KEY = "ClientId"; 

    public static int ClientId 
    { 
     get { return HttpContext.Current.Session[ClientId_KEY] != null ? (int)HttpContext.Current.Session[ClientId_KEY] : 0; } 
     set { HttpContext.Current.Session[ClientId_KEY] = value; } 
    } 
} 

Después de que se puede acceder a él desde cualquier lugar de esta manera:

int clientId = SessionData.ClientId; 

Si desea puede usar objetos enteros en Sesión de esta manera.

o puede establecer que de este modo: SessionData.ClientId = clientId;

+0

Gracias por su respuesta ... Básicamente estamos implementando el acceso Multi Tenant para nuestro framework. ¿Entonces la Sesión es un buen enfoque? Y obtengo el ClientID basado en el usuario registrado de DB. Entonces, ¿cómo puedo vincular CliendID en la variable de sesión? – user10489

+0

No puedo conocer todas las implicaciones y los requisitos de su proyecto, pero hasta ahora no veo ningún problema al usar Session. He actualizado mi respuesta para mostrar cómo puede establecer ClientId en Session usando el contenedor. – Dmitry

+0

¿Cuál es la ventaja de escribir un contenedor para acceder a la sesión – Nipuna

Cuestiones relacionadas