Redireccionar el usuario dependiendo del Rol desde Login webcontrol

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.

4 comentarios en “Redireccionar el usuario dependiendo del Rol desde Login webcontrol”

  1. Pues sí q me ha pasado también el verme en la página de login y con las manos vacías… El caso es q vi en el Login2.UserName un posible aliado, que no resultó ser tal. El caso es q si en el textBox de login tecleas “aBcDe ” cuando realmente te registraste como “abcde” (sin espacio final y minúsculas), la operación de login va bien y tira para adelante. Sin embargo al estar yo usando mi inexacto login “aBcDe ” obtenido por este método, me trajo fatales consecuencias. Al final resolví aplicando la función “.Trim()” y “.ToLower()” al String obtenido mediante Login2.UserName. Y esa fue mi experiencia …
    Por cierto, interesante blog, gracias por tus didácticos posts 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *