我要求当userA登录时我必须将test1.aspx显示为我的主页。 当userB登录时,我必须显示test2.aspx。我该如何处理这种情况。 请不要告诉我像
if(userA)
{
response.redirect("abc.aspx");
}
答案 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