Cuando hago un sitio que requiere registro e inicio de sesión, para algo rápido sin muchos requisitos, utilizaré Membresía con atributos [Autorizar] y todo eso. Funciona bien para lo que hace. Pero ahora estoy queriendo algo más. Básicamente estoy desarrollando un sitio usando ASP.NET MVC EF CodeFirst y quiero crear una entidad de usuario para que persista en el DB que contiene mucha más información. Dicha información requerida al registrarse tendría propiedades adicionales tales como Nombre, Apellido, Género, País, etc ....NET Membresía personalizada vs. Inicio de sesión/registro personalizado: Autenticación/Autorización
He intentado leer sobre la implementación de un MembershipProvider y MembershipUser personalizados, etc ... He ido tan lejos pero simplemente no se está uniendo como quiero al final. Ahora, cuando desarrolle un sitio en PHP o, en otras ocasiones, en ASP.NET, crearé mi clase de usuario y le daré todas las propiedades necesarias para la página de registro y simplemente la enviaré a la base de datos. Luego, cuando inicio sesión solo tomo el nombre de usuario o el correo electrónico y la contraseña, y simplemente creo una variable de sesión que indica si el usuario está autorizado o no.
¿Está bien que hacer? Simplemente no entiendo por qué toda esta Membresía es mucho más complicada de lo que parece ser, así que siento que me estoy perdiendo el sentido de todo. Además, noto en una aplicación web ASP.NET MVC que cuando estás autenticado que escribe esta línea ....
FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);
¿Cuál es la diferencia entre eso y ...
Session["username"] = model.UserName
Bueno, supongo que me voy a leer aún más ... Parece que cada vez que creo que he decidido algo, se sugiere algo más y nunca sé qué camino tomar para garantizar un rendimiento óptimo a largo plazo ... Gracias por tu respuesta. –
Una cosa que olvidé mencionar es que usar FormsAuthentication y establecer el actual IIdentity e IPrincipal le permitirá acceder al "Usuario actual" en cada solicitud (similar a su comentario php). Por ejemplo, para obtener el "nombre de usuario" actual, simplemente usaría User.Identity.Name dentro de su controlador. – Jesse