Un funcionalidad requerida desde el webcontrol Login es la redireccion a partir de un rol especifico, ya sea porque unos amigos lo necesitaban o por algunas preguntas de la misma tematica en los grupos de noticias de asp.net
Vamos por lo que nos dice la razón, que es en el evento LoggedIn. Porque se ejecuta en este orden: LoggingIn, Authenticate y luego LoggedIn
Un ejemplo:
Protected Sub Login2_LoggedIn(ByVal sender As Object, ByVal e As System.EventArgs) Handles Login2.LoggedIn If User.IsInRole("MAESTROJEDI") = True Then Response.Redirect("~/admin/indexParaMAESTROJEDI.aspx") End If End Sub
Pero no funciono..!!
No encontramos en ningun lado porque no teniamos al usuario disponible (en el objeto User), ni tampoco de esta manera:
Roles.IsUserInRole(Context.User.Identity.Name, "MAESTROJEDI")
Pareciera que cuando recien termina de armar la pagina se carga en la session y las cookies son enviadas a cliente….pero antes nada de nada
No nos ibamos a quedar de brazos cruzados, algo teniamos que hacer. Llegamos a dos soluciones que espero que sean de utilidad
OPCION 1: Pagina o Handler que sea te intermediario
Desde la página de login la enviamos en el mismo evento (LoggedIn) a otra pagina que alli podamos realizar esta sencilla pregunta de Roles
OPCION 2: Un poco… (artesanal) pero nos
Bueno dijimos entonces donde esta el usuario? y via MSN je en el textbox dentro del webcontrol Login y ya sabiamos que el usuairo se autentico
asi que solo nos quedaba recuperarlo:
Dim usuario As String = Login2.UserName If Roles.IsUserInRole(usuario, "MAESTROJEDI") Then Response.Redirect("~/admin/indexParaMAESTROJEDI.aspx") End If
OPCION 2.1:
Tambien lo puedes recuperar directamente del textbox que rederiza el webcontrol Login para el nombre de usuario con el id «Username»
Dim txtUsername As TextBox = CType(Login2.FindControl("Username"), TextBox) Dim usuario As String = txtUsername.Text If Roles.IsUserInRole(usuario, "JEDIMASTER") Then Response.Redirect("~/admin/indexParaJEDIMASTER.aspx") End If
Enlaces
- Login (Clase)
Proporciona los elementos de la interfaz de usuario para iniciar sesión en un sitio Web. - Login.LoggingIn (Evento)
Se produce cuando un usuario envía información de inicio de sesión, antes de que tenga lugar la autenticación. - Login.Authenticate (Evento)
Aparece cuando se autentica un usuario. - Login.LoggedIn (Evento)
Aparece cuando el usuario inicia sesión en el sitio Web y se ha autenticado.