Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/05/2007, 01:49
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 2 meses
Puntos: 4
Re: Nombre del Usuario

También puedes hacer lo siguiente. En el formulario en el que el usuario introduce sus datos y los validas creas un ticket de autenticación. Este ticket lo enviarás en forma de cookie al cliente.
Código:
....
FormsAuthentication.Initialize()
                    ' Se crea el ticket con el rol que le corresponda
                    Dim ticket As New FormsAuthenticationTicket(1, _
                            nombreUsuario, DateTime.Now, _
                            DateTime.Now.AddMinutes(20), _
                            True, roles, _
                            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(Request.QueryString("ReturnUrl"))
...
Luego, desde cualquier parte del sitio y siempre que no haya caducado el ticket puedes acceder al nombre de usuario de esta manera:
Código:
Dim nombreUsuario As String = Context.User.Identity.Name
No olvides poner esto en el archivo global.asax:
Código:
    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
Es un poco más largo pero luego el acceso es más rápido y sin recurrir a variables de sesión.

Un saludo.

PD: A ver si le podéis echar un vistacillo a mi problemilla.
__________________
¡¡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!