登录后的动态主页

时间:2013-07-01 10:10:35

标签: asp.net

我要求当userA登录时我必须将test1.aspx显示为我的主页。 当userB登录时,我必须显示test2.aspx。我该如何处理这种情况。 请不要告诉我像

if(userA) { response.redirect("abc.aspx"); }

3 个答案:

答案 0 :(得分:3)

将您的用户带到下拉列表中并输入这样的条件...希望这对您有所帮助。

if(DropDownList1.Text ==“Admin”)             {

            Response.Redirect("~/Admin/adminproduct.aspx");
        }
        else if (DropDownList1.Text == "TechSupport")
        {

            Response.Redirect("~/TechSupport/adminproduct.aspx");
        }
        else if (DropDownList1.Text == "Employee")
        {

            Response.Redirect("~/Employee/adminproduct.aspx");
        }

答案 1 :(得分:0)

不确定你期待什么答案。您需要一些机制来根据某些条件确定要发送给用户的页面。无论哪种方式,它都会以你所展示的“你不喜欢”的方式结束。我建议的是将用户分组并检查该组。

例如:

if (user.IsMemberOf("some group")
{
    // perform some steps and redirect
}

答案 2 :(得分:0)

假设您有一个内联网(非互联网)网站:

protected void Page_Load(object sender, System.EventArgs e)
{
    // Request.ServerVariables["AUTH_USER"]
    // Request.ServerVariables["LOGON_USER"]
    // Request.ServerVariables["REMOTE_USER"]

    string str = this.Request.ServerVariables("LOGON_USER");
    Console.WriteLine(str);





    switch (str.ToLower()) {
        case "domain1\\username1":
            Response.Redirect("test1.aspx");
            break;
        case "domain1\\username2":
            Response.Redirect("test2.aspx");
            break;
        case "domain2\\username3":
            Response.Redirect("test3.aspx");
            break;
        default:
            throw new Exception("foo");
    }




}

如果您有互联网网站,则需要使用ActiveX,这将限制您使用Windows上的IE。

当然,如果你有可变数量的用户,那么你应该通过数据库来实现:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim str As String = Me.Request.ServerVariables("LOGON_USER")
        Response.Redirect(GetUrlForUserName(str))
End Sub

Public Shared Function GetUrlForUserName(strUserName As String) As String
    Dim strURL As String = ""

    Using conn As System.Data.Common.DbConnection = New System.Data.SqlClient.SqlConnection(GetConnectionString())

        If conn.State <> ConnectionState.Open Then
            conn.Open()
        End If

        Using cmd As System.Data.Common.DbCommand = conn.CreateCommand()
            cmd.CommandText = "SELECT URL FROM T_UserURLS WHERE UserName = @YOUR_USER_NAME"
            Dim para As System.Data.Common.DbParameter = cmd.CreateParameter()
            para.ParameterName = "@YOUR_USER_NAME"
            para.Value = strUserName
            para.DbType = DbType.AnsiString
            cmd.Parameters.Add(para)
            strURL = System.Convert.ToString(cmd.ExecuteScalar())
        End Using

        If conn.State <> ConnectionState.Closed Then
            conn.Close()
        End If

    End Using

    Return strURL
End Function



Public Shared Function GetConnectionString() As String
    Dim sb As New System.Data.SqlClient.SqlConnectionStringBuilder
    sb.DataSource = Environment.MachineName
    sb.InitialCatalog = "master"

    sb.IntegratedSecurity = True
    If Not sb.IntegratedSecurity Then
        sb.UserID = "YOUR_USER"
        sb.Password = "YOUR_PW"
    End If

    sb.PersistSecurityInfo = False
    sb.Pooling = False
    sb.PacketSize = 4096
    sb.MultipleActiveResultSets = True

    Return sb.ConnectionString
End Function
相关问题