Dim e As RequestEventArgs = args(0)
Static UserTable As DataTable '定义一个变量,用于存储用户随机身份ID,以及最后一次活动时间.
Static ClearTime As Date
If UserTable Is Nothing Then '创建用于记录登录信息的临时表
ClearTime = Date.Now()
Dim dtb As New DataTableBuilder("UserInfos")
dtb.AddDef("UserName", Gettype(String), 16)
dtb.AddDef("UserID",Gettype(String),16)
dtb.AddDef("ActiveTime",Gettype(Date))
UserTable = dtb.Build(True)
End If
If (Date.Now - ClearTime).TotalMinutes >= 30 Then '清除超过30分钟没有操作的登录信息
UserTable.DeleteFor("ActiveTime < #" & Date.Now.AddMinutes(-30) & "#")
ClearTime = Date.Now()
End If
Dim wb As New weui
'身份验证
Dim UserName As String
Dim Password As String
Dim UserID As String
Dim UID As String
If e.Path = "logon.htm" '验证用户名和密码
If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password") Then
Dim Verified As Boolean '用于标记用户是否通过了身份验证
UserName = e.PostValues("username")
Password = e.PostValues("password")
'验证用户身份
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "Select * Fr om {员工表} Where [员工姓名] = '" & UserName & "' And [密码] = '" & Password & "'"
dt = cmd.ExecuteReader
If dt.DataRows.Count = 1 Then
Verified = True
Dim dr0 As DataRow = dt.DataRows(0)
UID = dr0("员工编号")
End If
If Verified Then
UserID = Rand.NextString(16) '生成随机用户ID
UserName = EncryptText(UserName,"123","123") '将用户名加密.
Dim dr As DataRow = UserTable.Find("UserName = '" & UserName & "'")
If dr IsNot Nothing Then '如果是重复登录,删除以前的登录信息
dr.Delete()
End If
dr = UserTable.AddNew()
dr("UserName") = UserName
dr("UserID") = UserId
dr("ActiveTime") = Date.Now '记录登录时间
wb.AppendCookie("username",UserName) '将用户名和密码写入cookie
wb.AppendCookie("userid",UserID)
wb.AppendCookie("uid",UID)
wb.InsertHTML("<meta http-equiv='Refresh' c>") '直接跳转到首页
e.WriteString(wb.Build) '生成网页
Return "" '必须的
End If
End If
Else '其它页面从Cookie提取登录信息进行验证
UserName = e.Cookies("username") '从cookie中获取用户名
UserID = e.Cookies("userid") '从cookie中获取 随机ID
Dim dr As DataRow = UserTable.Find("UserName = '" & UserName & "'")
If dr IsNot Nothing AndAlso dr("UserID") = UserID Then '如果通过验证,更新活动时候,继续访问其它页面.
dr("ActiveTime") = Date.Now '更新活动时间
Else '如果验证失败
wb.InsertHTML("<meta http-equiv='Refresh' c>") '那么直接跳转到登录页面
e.WriteString(wb.Build) '生成网页
Return "" '必须的
End If
End If
'开始生成网页
Select Case e.path
Case "logon.htm" '登录页面
wb.AddPageTitle("","pageheader","管理系统","")
If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password") Then '判断是否是验证失败后的重新登录
wb.AddTopTips("","toptip1","用户名或密码错误!").msec = 2000 '如果用户通过登录按钮访问,则给用户一个2秒的提示.
End If
wb.AddForm("","form1","logon.htm")
With wb.AddInputGroup("form1","ipg1")
.AddInput("username","户名","text")
.AddInput("password","密码","password")
End With
With wb.AddButtonGroup("form1","btg1",True)
.Add("btn1", "登录", "submit")
End With
Case "exit.htm" '退出登录
wb.DeleteCookie("username") '清除cookie中原来的用户名和密码
wb.DeleteCookie("password")
wb.DeleteCookie("uid")
wb.InsertHTML("<meta http-equiv='Refresh' c>") '然后直接跳转到登录页面
Case "car.htm"
Functions.Execute("车辆管理",e)
Return "" '必须的
Case "drive.htm"
Functions.Execute("用车登记",e)
Return "" '必须的
Case "gas.html"
Functions.Execute("油卡登记",e)
Return "" '必须的
Case "prod.htm"
Functions.Execute("盘点sc",e)
Return "" '必须的
Case "", "default.html" '首页
With wb.AddTabBar("", "tb1", 1)
' .AddButton("bt1","返回","./images/button.png").Attribute = ""
.AddPage("page1","","./images/button.png")
.AddButton("bt2","盘点","./images/cell.png","/prod.htm")
.AddButton("bt3","退出系统","./images/cell.png","/exit.htm")
.AddButton("bt4","车辆管理","./images/cell.png","/car.htm")
End With
With wb.AddGrid("page1","g1")
UID = e.Cookies("uid") '从cookie中获取用户ID
Dim cmd1 As New SQLCommand
Dim dt1 As DataTable
cmd1.C
cmd1.CommandText = "Select * Fr om {权限明细} Where [用户ID] = '"& UID &"'"
dt1 = cmd1.ExecuteReader
For Each dr As DataRow In dt1.datarows
.Add(dr("序号"),dr("模块名称"),dr("模块图标"),"")
Next
End With
Case "filter.htm"
Functions.Execute("Filter",e)
Return "" '必须的
Case "list.htm"
Functions.Execute("List",e)
Return "" '必须的
Case "tongji.htm"
Functions.Execute("Statistics",e)
Return "" '必须的
End Select
e.WriteString(wb.Build) '生成网页