2009-09-16 6 views
5

Sé que esto puede sonar como algo que se explica en todas partes ... pero he estado viendo muchos videos de asp.net/learn leyendo artículos - y todavía falta algo que explica cómo se une toda esta "Membresía".ASP.NET Users/Membership/MembershipUser/Security/Principal/Profile ... AYUDA

Por un lado, está esta administración de usuarios incorporada de .NET que le permite crear roles, usuarios, etc. Luego, por otro lado, obtener ese usuario, almacenarlo (en la sesión, etc.) parece una tarea extraña , por lo que he leído, que implica la creación de sus propios objetos 'Principal', etc.

Si hay alguien por ahí que tenga la comprensión y el tiempo, ¿podrían darnos (me) una breve explicación de qué es qué con todos esta. Tal vez cómo se relaciona ... ¿Cómo uso una cadena de nombre de usuario/contraseña para ver si existe una cuenta, iniciar sesión, verificar si tienen el rol correcto para una acción ... o incluso obtener todos los roles que el usuario ¿es parte de?

Sé que esta pregunta podría no ser del agrado de las personas que ya entienden bien las cosas del usuario .net, pero solo respondan si pueden ayudar.

Muchas gracias de antemano. peteski

Respuesta

6

No tiene que crear su propio objeto principal en absoluto. Todo lo que puede hacer es utilizar uno de los MembershipProvider listos para usar (por ejemplo: SQLMembershipProvider) para administrar su usuario y usar uno de los RoleProvider (por ejemplo: SQLRoleProvider) para establecer la autorización para los usuarios, si es necesario.

Para obtener el usuario, no es necesario que lo almacene en la sesión. Simplemente use Page.User para obtener la información básica del usuario actual (nombre, IsAuthenticated).

Para comprobar si el usuario si la credencial de usuario son correctos, puede utilizar

Membership.ValidateUser(username,password). 

Para iniciar la sesión, le sugiero que utilice el control de sesión ASP.NET proporcionado pero se puede código propio inicio de sesión con un poco mas trabajo. Si utiliza la autenticación de formularios, que es algo así como:

if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text)) 
    FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked); 
else 
    Msg.Text = "Login failed. Please check your user name and password and try again."; 

PS: El ejemplo viene de MSDN

Por último, para comprobar si el usuario puede realizar una acción, se utiliza

RoleProvider.IsUserInRole(username,rolename) 

Usted también puede controlar el acceso a un recurso (una página, un archivo, una carpeta, etc.) mediante la autorización de configuración en su web.config, por ejemplo:

< autorización> < deny users = "?" /> < permiten papeles = "Administradores" /> < denegar a los usuarios = "*" /> </authorization>

Esperanza esta ayuda y no dudes en pedir más información si no está claro

Editar

Para responder a su comentario, así es como funciona:

página.El usuario usa una cookie de autenticación para identificar al usuario actualmente registrado. Esta cookie se establece automáticamente en FormsAuthentication.RedirectFromLoginPage pero, si solo desea configurar el usuario actual sin redireccionar, puede llamar manualmente a FormsAuthentication.SetAuthCookie (userName, persistentCookie) donde persistentCookie es un valor booleano que indica si desea que esta cookie sea persistente. o no en el navegador.

Espero que aclare la respuesta original

+0

Hola Martin, esto ayuda un poco - prácticamente. Aunque, ¿qué sucede si no quiero redirigir a un usuario de una página a otra? ¿Qué método es el que establece el Page.User (es decir, los registra)? ¿RedirectFromLoginPage hace esto? (la intelliscencia no lo deja claro). También estaba buscando una explicación de lo que hace cada miembro de membresía (para ayudarme a entenderlo y como referencia). ¡Pero gracias por tu respuesta! ¡Muy apreciado! – peteski

+0

Ahora he descubierto que usando el FormsAuthentication.SetAuthCookie(); No puedo 'registrar al usuario' ... Luego redirijo a la misma página donde puedo agregar lógica para manejar diferentes roles, etc. – peteski