Cómo redirigir a un usuario a diferentes páginas de acuerdo a su Rol

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:
  1. <asp:Login ID="Acceso" runat="server" BorderPadding="8" 
  2.         DisplayRememberMe="False"
  3.         FailureText="Datos inválidos, por favor inténtelo de nuevo."
  4.         LoginButtonText="Entrar" LoginButtonType="Button"
  5.         PasswordLabelText="Contraseña:" TitleText=""
  6.         UserNameLabelText="Nombre de usuario:"
  7.         DestinationPageUrl="">
  8.         <ValidatorTextStyle CssClass="Validador" ForeColor="" />
  9.         <FailureTextStyle CssClass="Validador" ForeColor="" />
  10.         <TitleTextStyle CssClass="Titulo" Font-Bold="True" HorizontalAlign="Left" />
  11.         <TextBoxStyle Font-Bold="False" />
  12.         <LoginButtonStyle Font-Bold="False" />
  13.         <LabelStyle Font-Bold="True" HorizontalAlign="Left" />
  14.         <CheckBoxStyle HorizontalAlign="Right" />
  15.     </asp:Login>

Este es el código para realizar la redirección:

VB.NET:
  1. Protected Sub Acceso_LoggedIn(ByVal sender As Object, ByVal e As System.EventArgs) Handles Acceso.LoggedIn
  2.         Dim ElLogin As Login
  3.         ElLogin = CType(sender, Login)
  4.         If Roles.IsUserInRole(ElLogin.UserName, "Administrador") = True Then
  5.             Response.Redirect("~/Administrador/Default.aspx")
  6.         Else
  7.             If Roles.IsUserInRole(ElLogin.UserName, "UsuarioRegular") = True Then
  8.                 Response.Redirect("~/Usuario/Default.aspx")
  9.             End If
  10.         End If
  11.     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.

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.