【问题标题】:Redirect to other page according their roles根据角色重定向到其他页面
【发布时间】:2012-02-23 02:58:54
【问题描述】:

我需要你们这里的帮助。所以,在我的系统上,有两个角色。管理员和用户。我使用登录控制使他们能够登录系统。我怎样才能让这两个角色重定向到不同的页面?我正在使用会员资格和表单身份验证。如果您能给我一些帮助,我将不胜感激。谢谢你:)

【问题讨论】:

  • `LoginView'控件可以完成这项工作,无需编写代码。
  • 登录视图通常是根据登录状态和/或角色在同一页面上显示不同的视图。这与提出的任务是转到不同页面的问题略有不同。
  • 好的,经过一番修改,我的编码终于可以工作了。将很快发布解决方案。 :) 谢谢大家!

标签: asp.net asp.net-membership login-control


【解决方案1】:

处理登录控件“OnLoggedIn”事件。在这种情况下,确定当前用户角色。可以这样做(下面的“LoginUser”代表您的登录控件):

string[] userRole = Roles.GetRolesForUser(LoginUser.UserName);

http://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.getroles%28v=vs.100%29.aspx

然后根据角色使用 Response.Redirect 将它们发送到正确的目的地。

【讨论】:

  • 谢谢你的回答 sannee :) 现在就试试
  • 酷,如果它适合你,请检查我的回答作为答案。
【解决方案2】:

我现在明白了。您需要做的第一件事是,在控件的登录属性中转到事件,双击loggedIn行,它将引导您进入cs页面。那么,你需要做的是

protected void Login1_LoggedIn(object sender, EventArgs e)
{
    {
             if (Roles.IsUserInRole(Login1.UserName, "Admin"))
            Response.Redirect("~/Admin/Default.aspx");
        else if (Roles.IsUserInRole(Login1.UserName, "User"))
            Response.Redirect("~/User/Default.aspx");
    }
}

然后不要忘记将登录控件的目标 URL 设置为您希望用户在登录后重定向的 URL

【讨论】:

    【解决方案3】:

    这将根据用户的角色将用户重定向到相应的页面。

    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
        {
            if (Membership.ValidateUser(Login1.UserName, Login1.Password))
            {
                if (Roles.IsUserInRole(Login1.UserName, "Admin"))
                {
                   Response.Redirect("~/Admin/Default.aspx");
                }
                else if (Roles.IsUserInRole(Login1.UserName, "User"))
                {
                   Response.Redirect("~/User/Default.aspx");
                }               
            }
        }
    

    谢谢。

    【讨论】:

      【解决方案4】:

      此代码有效:

      Try
      
          If Membership.ValidateUser(Login1.UserName, Login1.Password)
          Then
              If Roles.IsUserInRole(Login1.UserName, "administrasi")
              Then
                  Response.Redirect("~/administrasi/Default.aspx")
                  ElseIf Roles.IsUserInRole(Login1.UserName, "client")
              Then
                  Response.Redirect("~/client/Default.aspx")
              Else
                  Response.Redirect("~/user/Default.aspx")
              End If
          End If
      Catch ex As Exception
      
      End Try
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-26
        • 1970-01-01
        • 1970-01-01
        • 2017-05-01
        • 2012-03-16
        • 1970-01-01
        相关资源
        最近更新 更多