使用ASPState的经典asp

时间:2013-11-08 03:11:35

标签: session asp-classic aspstate

ASP.NET可以自动将会话保存到数据库。有没有办法在Classic ASP中将会话保存到数据库?

我需要使用数据库共享ASP.NET和Classic ASP之间的会话。如果Classic ASP不支持此功能。有没有其他方法来模拟这个?

1 个答案:

答案 0 :(得分:0)

你在使用会话状态是什么?它是存储数据,例如让用户登录各个页面吗?

您可以将会话信息存储在数据库中,但需要一种方法将不同的会话状态绑定在一起。

一种可以跟踪用户“会话”的方法是使用自己的cookie,可以从ASP Classic代码和ASP .Net代码中读取。您可以设置cookie的到期日期,以控制用户在需要重新进行身份验证之前保持登录的时间。您可以使用该cookie存储用户ID信息以及您可能以特定于用户的会话状态存储的任何其他相关信息。

用于设置cookie的ASP Classic代码:

IF HTTPSConnection Then
    Response.AddHeader "Set-Cookie",theName & "=" & theValue & "; path=/; HttpOnly; Secure=True; Domain=" & cookieDomainName & "; Expires=" & cookieExpiry
Else
    Response.AddHeader "Set-Cookie",theName & "=" & theValue & "; path=/; HttpOnly; Domain=" & cookieDomainName & "; Expires=" & cookieExpiry
END IF

确保在cookie上设置“HTTPOnly”标志,以帮助防止XSS,MITM,cookie劫持攻击。您还可以考虑加密存储在cookie中的数据。

您可以使用以下代码循环访问ASP Classic IIS会话对象:

For Each ss in Session.Contents
    response.write Session.Contents(ss) & "<br/>" 'writes out the session contents
Next


For Each so in Session.StaticObjects
    response.write Session.StaticObjects(so) & "<br/>" 'writes out the session objects
Next