Forms Authentication

09/08/2004 - 17:51 por Luis Esteban Valencia Muñoz perrohijueputa | Informe spam
Es un portal de DJs.

La idea es que los Djs puedan registrase(hecho). Y que una vez logeados
ellos puedan tener un menu personal( para subir su foto, su biografia,
etcetera)
Los administradores tambien podran tener un menu para ellos(para borrar djs,
moderar foros, etc)


No se como hacer la parte de autenticacion y la de los roles, y como mostrar
menus dependiendo del rol?


Ayuda teorica y con codigo por favor.





PD:Yo tengo Un SP que usa el PWDENCRYPT para meter la contraseña encriptada
en la base de datos.




Necesito bastante ayuda al respecto.



LUIS ESTEBAN VALENCIA MUÑOZ
MIEMBRO ACTIVO DE WWW.ALIANZADEV.NET
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
09/08/2004 - 20:02 | Informe spam
No se como hacer la parte de autenticacion y la de los roles, y como
mostrar menus dependiendo del rol?



Para poder asignar un rol deberas crear tu el cookie de autenticacion y
luego verificar ese cookie, crear el usuario y asignarlo como usuario del
contexto. Por ejemplo:

' Crear una cookie con el ticket de autenticacion para el usuario y rol
Public Function CrearAuthCookie(ByVal usuario As String, ByVal rol As
String) As HttpCookie

Dim ticket As New FormsAuthenticationTicket(1, usuario, DateTime.Now,
DateTime.Now.AddMinutes(20), False, rol)
Dim encryptedTicket As String = FormsAuthentication.Encrypt(ticket)
Dim cookie As New HttpCookie(FormsAuthentication.FormsCookieName,
encryptedTicket)

Return cookie

End Function

Esta funcion la llamas cuando el usuario ingresa pasandole el nombre del
usuario y su rol y luego asignas la cookie a la respuesta de la pagina.
Luego en el evento AuthenticateRequest del Global.asax verificas si esta
presenta esa cookie y de ser asi creas el usuario que luego asignas como
usuario al contexto de la llamada:

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As
EventArgs)

' Obtengo la cookie
Dim cookie As HttpCookie Request.Cookies(FormsAuthentication.FormsCookieName)
If cookie Is Nothing Then Return

' Obtengo el ticket desde la cookie
Dim ticket As FormsAuthenticationTicket FormsAuthentication.Decrypt(cookie.Value)

' Reviso si la cookie expiro
If Not ticket.Expired Then

' Creo el usuario
Dim id As New System.Security.Principal.GenericIdentity(ticket.Name,
"FormsAuthentication")

' Creo el usuario con roles
Dim principal As New System.Security.Principal.GenericPrincipal(id,
New String() {ticket.UserData})

' Asigno el usuario al contexto
Context.User = principal

End If

End Sub

Luego solo debes utilizar User.IsInRole("el_rol_aqui") para saber si el
usuario logueado es de un determinado rol.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Preguntas similares