Ok, esto parece ser una necesidad común. Un poco de google encuentra muchas formas de hacer esto. Estoy interesado en la forma más "correcta de mvc" para hacerlo.Cómo inicializar información sobre la autorización
Tengo, en la esquina superior derecha de mi aplicación, un saludo que dice Hello FirstName LastName
. Ahora, es bastante fácil acceder al nombre de usuario del usuario que inició sesión, a través del IPrincipal
(también conocido como User.Identity.Name
). Sin embargo, esto no me dará el nombre y apellido del usuario. Tengo que presionar la API de membresía para obtener eso.
Al golpear la API de membresía tiene sus inconvenientes. Llega a la base de datos todo el tiempo, lo que agrega un acceso de acceso adicional a cada página servida. Es bastante fácil establecer algunas variables de sesión al iniciar sesión, pero esto solo funciona para esa sesión. Si el usuario hace clic en "Recordarme", no se iniciará la sesión la próxima vez y aún tengo que cargar estos valores.
- Pude crear mi propio proveedor de membresía para hacer algo de caché, pero eso es mucho trabajo para un propósito más o menos único.
- Podría usar
Application_AuthenticateRequest
y presionar la API de membresía y almacenar los valores en variables de sesión, o algo similar. Esto está bien, pero parece un poco de fuerza bruta. - Pude registrar un filtro global y manejar OnAuthenticate, esencialmente haciendo lo mismo. Esto parece un poco mejor, pero estoy fuera de las ramificaciones aquí.
- Podría obtener un controlador de base, y simplemente agregar propiedades para proporcionar esta información. Esto parece un poco "old school", y odio tener que hacer una clase base con un solo propósito.
- Pude crear un método estático de caché que obtendría la información en el primer acceso. Esto básicamente no es mucho mejor que un singleton.
- También podría crear mi propio IPrincipal, pero eso significa lanzarlo cada vez para obtener los datos, y eso parece torpe. Podría incluirlo en otra clase para simplificarlo, pero aún así ...
- Podría almacenar los datos en la cookie de autenticación de formularios, y obtenerlos desde allí. Hay algunas herramientas disponibles para que sea más fácil.
¿Hay algún método que no haya pensado? ¿Y cuál es la forma más "correcta de mvc" de hacerlo?
pregunta muy importante para mí también. –