Foros del Web » Programación para mayores de 30 ;) » .NET »

Ticket de autenticación

Estas en el tema de Ticket de autenticación en el foro de .NET en Foros del Web. Estoy intentando enviar al cliente una cookie para identificarlo pero lo que antes no daba problemas ahora sí. En la página de registro: Código: FormsAuthentication.Initialize() ...
  #1 (permalink)  
Antiguo 05/07/2005, 06:23
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Ticket de autenticación

Estoy intentando enviar al cliente una cookie para identificarlo pero lo que antes no daba problemas ahora sí.

En la página de registro:

Código:
FormsAuthentication.Initialize()
                    ' Se crea el ticket con el rol que le corresponda
                    Dim ticket As New FormsAuthenticationTicket(1, _
                        dt.Rows(0).Item("Nombre"), DateTime.Now, _
                        DateTime.Now.AddMinutes(20), _
                        True, "Cliente", _
                        FormsAuthentication.FormsCookiePath)
                    ' Se encripta el ticket
                    Dim encTicket As String = FormsAuthentication.Encrypt(ticket)
                    ' Se crea la cookie con el ticket encriptado
                    Dim cookie As New HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
                    ' Caducidad de la cookie igual que el ticket
                    cookie.Expires = ticket.Expiration
                    ' Se envía la cookie
                    Response.Cookies.Add(cookie)
                    ' Se redirige al usuario
                    Response.Redirect("webform2.aspx", True)
y en webform2.aspx:

Código:
        Response.Write(context.User.IsInRole("Cliente"))
        Response.Write("<br>Nombre: " & context.User.Identity.Name)
devuelve False y el nombre en blanco.

En el archivo global.asax he puesto:

Código:
Imports System.Web
Imports System.Web.SessionState
Imports System.Security.Principal
Imports System.Web.Security

......

    Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
        ' Se desencadena al intentar autenticar el uso
        If Not (HttpContext.Current.User Is Nothing) Then
            If HttpContext.Current.User.Identity.IsAuthenticated Then
                If TypeOf HttpContext.Current.User.Identity Is FormsIdentity Then
                    Dim id As FormsIdentity = CType(HttpContext.Current.User.Identity, FormsIdentity)
                    Dim ticket As FormsAuthenticationTicket = id.Ticket
                    Dim userData As String = ticket.UserData
                    Dim roles() As String = userData.Split(",")
                    HttpContext.Current.User = New GenericPrincipal(id, roles)
                End If
            End If
        End If
    End Sub
¿De qué me estoy olvidando?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 05/07/2005, 06:52
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Pues para empezar mira si te escribe la cookie. Si te la escribe bien, mira que los datos que escribes en la cookie sean los correctos.

Con eso te deberia de funcionar.
  #3 (permalink)  
Antiguo 05/07/2005, 06:56
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Sí, en principio la escribe. Aunque como está encriptada no puede saber si están bien los datos. El caso es que he copiado el código literalmete de otro sitio que tenía y en el que esto no daba problemas.

Gracias por contestar.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 06/07/2005, 04:12
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Hola de nuevo. He probado una página de prueba que viene en la ayuda de VS.Net para comprobar los datos de la cookie. Esto es lo que devuelve:

Cita:
Forms Authentication Example
Hello, INVITADO

Forms Authentication Ticket Properties
CookiePath: /
Expiration: 06/07/2005 12:26:17
Expired: False
IsPersistent: True
IssueDate: 06/07/2005 12:06:17
Name: INVITADO
UserData: Cliente
Version: 1
Se supone que en UserData es donde se guarda el rol al que pertenece el usuario ¿no? Entonces, ¿por qué devuelve Falso cuando pongo Me.Context.User.IsInRole("Cliente")?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:07.