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 Login
-
ElLogin = CType(sender, 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.
