Si tienes una aplicación usando Membership
con varios Roles y necesitas redirigir al usuario a diferentes páginas de acuerdo al rol en el que se encuentra utiliza el siguiente código.
Este es tu control Login
en tu página:
- <asp:Login ID="Acceso" runat="server" BorderPadding="8"
- DisplayRememberMe="False"
- FailureText="Datos inválidos, por favor inténtelo de nuevo."
- LoginButtonText="Entrar" LoginButtonType="Button"
- PasswordLabelText="Contraseña:" TitleText=""
- UserNameLabelText="Nombre de usuario:"
- DestinationPageUrl="">
- <ValidatorTextStyle CssClass="Validador" ForeColor="" />
- <FailureTextStyle CssClass="Validador" ForeColor="" />
- <TitleTextStyle CssClass="Titulo" Font-Bold="True" HorizontalAlign="Left" />
- <TextBoxStyle Font-Bold="False" />
- <LoginButtonStyle Font-Bold="False" />
- <LabelStyle Font-Bold="True" HorizontalAlign="Left" />
- <CheckBoxStyle HorizontalAlign="Right" />
- </asp:Login>
Este es el código para realizar la redirección:
- Protected Sub Acceso_LoggedIn(ByVal sender As Object, ByVal e As System.EventArgs) Handles Acceso.LoggedIn
- Dim ElLogin As System.Web.UI.WebControls.Login
- ElLogin = CType(sender, System.Web.UI.WebControls.Login)
- If Roles.IsUserInRole(ElLogin.UserName, "Administrador") = True Then
- Response.Redirect("~/Administrador/Default.aspx")
- Else
- If Roles.IsUserInRole(ElLogin.UserName, "UsuarioRegular") = True Then
- Response.Redirect("~/Usuario/Default.aspx")
- End If
- End If
- End Sub
Importante: Es muy probable que tu página de inicio de sesión se llame “Login.aspx”, si haces eso, entonces la clase de la página llevará el nombre de “Login”, y esto se confunde con la clase del control “Login”. Si no funciona el código anterior quizás tengas este problema, solamente renombra tu página (lo más importante es renombrar su clase) a cualquier otra cosa, por ejemplo: PaginaLogin o Default.
Excelente, lo estaba intentando con el User.IsInRole y no funcionaba. Muchas Gracias!!!
Perfecto!
Muchas gracias por tu colaboración, me funciono perfecto.