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?