据我所知,有多种资源可以根据用户的访问级别将用户重定向到特定页面。
我的问题是我的一些瑕疵阻止它正常工作。
非常感谢您的协助。
以下是我们要做的事情。
我们有员工抱怨。这些员工可以获得访问和提交申诉的链接。
一旦员工提出申诉,员工的经理就会登录并重定向到显示所有提出申诉的员工的页面,以便审查他们的申诉并确定是否员工被批准会见董事会审查他们的案件,这就是我被困的地方。
我有两个表没有设计。所以,我正在努力充分利用我所掌握的东西。
一个名为Employee的表具有员工用户名(employeeID)和密码(ssn)。
名为Details的另一个表有employeeID(与Employee表相关),ManagerID也与EmployeeID的Employee表相关
一旦用户提出申诉并提交申诉,他/她的经理ID(EmployeeID)将作为ManagerID保存到详细信息表中。
这个想法是,一旦管理员登录到系统并且他/她的ID(ManageID)出现在详细信息表中,他/她将被重定向到名为Decision.aspx的页面。
当我尝试编码时,包括经理在内的所有人都被重定向到名为LetterOfIntent.aspx的同一页面。
任何想法我做错了什么?
代码如下:
StrSQL = "Select Dept, division, divisionManager, EmployeeName,Employee.EmpID, Email, SSN,Category FROM Employee e,Details d Where e.empID = d.managerID OR e.empID = @empid and SSN=@Password"
' Initialize Database Connection
Dim connStr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Dim conn As New SqlConnection(connStr)
Dim cmd As New SqlCommand(StrSQL, conn)
'We use parametized query to prevent sql injection attack
Dim p1 As New SqlParameter("@enpid", StrUser)
Dim p2 As New SqlParameter("@Password", StrPass)
cmd.Parameters.Add(p1)
cmd.Parameters.Add(p2)
While dr.Read()
If dr("empid") <> "" And dr("ssn") <> "" Then
Session("fullname") = dr("empName")
Session("dept") = dr("Dept")
Session("password") = dr("SSN")
Session("Email") = dr("Email")
Session("division") = dr("division")
Session("empid") = dr("empid")
Session("managerID") = dr("managerId")
Session("Cat") = dr("Category")
BValid = True
Else
End If
End While
' This handles all response per validation
If BValid = True Then
If Session("Cat") = "Pending" Then
Response.Redirect("~/pending.aspx")
ElseIf Session("Cat") = "In Progress" Then
Response.Redirect("~/inprogress.aspx")
ElseIf Session("managerID") <> "" And Session("empid") = Session("managerID") Then '***This is a manager, send him/her to Decision page
Response.Redirect("~/Decision.aspx")
Else '***Ok, this is an employee trying to file grievance, send him to LetterofInternt page.
Response.Redirect("~/LetterOfIntent.aspx?myname= " & Session("empid") & "")
End If
'If all else fails, then reject their athentication attempt and let them know.
ElseIf BValid = False Then
lblMsg.ForeColor = Color.Red
lblMsg.Text = "Login failed. "
End If
答案 0 :(得分:0)
我怀疑您需要将您正在进入会话的每个值ToString,如下所示:
Session("Cat") = dr("Category").ToString()
你需要对每一个进行一些空检查,但是根据信息看来它可能是你的问题。