Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/07/2005, 06:23
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 4 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!