在ASP应用中验证用户身份(5) |
| 作者:佚名 来源:不详 更新:2006-8-25 21:05:35 错误报告 我要投稿 |
五、会话终止
当ASP会话结束时会运行global.asa中的Session_OnEnd方法,可以在这里删除 保存在Application("Users")数组中由于超时而被终止会话的用户。记录用户是由 于什么原因(超时还是显式退出)终止会话往往很有用处,下面的代码通过更新Users 表的TimedOut字段实现该功能: sub Session_OnEnd dim AppUsers dim aUser dim I dim j dim conn dim supportsCookies dim foundUser on error resume next supportsCookies=Session("SupportsCookies") Application.Lock AppUsers = Application("Users") foundUser = false for I = 0 to ubound(AppUsers) set aUser = AppUsers(I) if supportsCookies then if aUser("SessionID") = Session.SessionID then foundUser = true end if elseif dateAdd("n", Session.timeout, aUser("LastActivity")) < now() then foundUser = true end if if foundUser then set conn = server.createObject("ADODB.Connection") conn.ConnectionString=Session("ConnectionString") conn.ConnectionTimeout=Session("ConnectionTimeout") conn.mode=Session("Mode") conn.open conn.execute "UPDATE Users SET TimedOut=1 WHERE Users.Signon='" & aUser("Signon") & "'" conn.close set conn=nothing set aUser=nothing set AppUsers(I) = nothing for j = I to ubound(AppUsers) - 1 set AppUsers(j) = AppUsers(j + 1) next if ubound(AppUsers) > 0 then redim preserve AppUsers(ubound(AppUsers) - 1) else AppUsers = Array() end if exit for end if next Application("Users") = AppUsers Application.UnLock end sub
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |