您的位置:首页技术开发ASP技巧 → 让Session对象在不同域名下实现共享

让Session对象在不同域名下实现共享

时间:2004/11/7 4:03:00来源:本站整理作者:蓝点我要评论(0)

There is a general belief among developers that session state maintenance is always against one

domain / site. And therefore one can not maintain session state across different domains. Usually there is

no such requirement to maintain session state across different domains. But of late due to increase in the

scope of web based applications developers feel the need to share the session state with other domains.

The other domain may be a sister concern of the same company, or may be the B2B partner. So the question

arises how one can share the session variables across other domains easily and safely.



--------------------------------------------------------------------------------





  

How to share Session variables across Domains





Introduction  

      There is a general belief among developers that session state maintenance is always against one

domain / site. And therefore one can not maintain session state across different domains. Usually there is

no such requirement to maintain session state across different domains. But of late due to increase in the

scope of web based applications developers feel the need to share the session state with other domains.

The other domain may be a sister concern of the same company, or may be the B2B partner. So the question

arises how one can share the session variables across other domains easily and safely.



  



Sharing Session variables using aSMS  

     

      Configure aSMS





      Sharing Session variables across domains is very easy using aSMS. aSMS Standard and Advanced both

support sharing session variables. Lets assume two different domains mydomain1.com and mydomain2.com. And

the requirement is to share the session variables between mydomain1.com and mydomain2.com. For simplicity

sake lets assume one webserver each for mydomain1.com and mydomain2.com. (It’s also possible so share

session variables between different domains hosted on same webserver). So www.mydomain1.com points to

webserver of domain1 and www.mydomain2.com points webserver of mydomain2.com.



Install aSMS on both webservers. Both aSMS should share a common LDAP server to share session variables.

Lets assume that common LDAP server be ldap.mydomain.com. On the webserver of mydomain1.com, open the aSMS

Admin Console.



For the,



LDAP Path enterLDAP://ldap.mydomain.com:1002/o=mydomain/ou=Members

LDAPAdminentercn=Administrator,ou=Members,o=mydomain



Enter the Admin Password. Set your Session Time out duration. If you want to support cookies then set

Support Cookies to True.









Click ‘Test LDAP Source’ button. If it returns ‘Successful’ Then aSMS has been configured successfully

on the webserver of mydomain1.com.









Do the same on the webserver of mydomain2.com. Take care to enter the same LDAP path

(LDAP://ldap.mydomain.com:1002/o= mydomain/ou=Members)for the webserver of mydomain2.com. This way we

ensure that aSMS of both webservers point to the same LDAP Server. Test LDAP connection by clicking ‘test

LDAP source’ button. If it returns successful then aSMS has been configured properly on webserver of

mydomain2.com also and they both point to the same LDAP server.



  

     

Start Session on Webserver of mydomain1.com





  One can use the functions.asp (link to function.txt) given in the sample files and include this file in

all asp pages. If functions.asp has been used then Session can be started by just calling SessionStart

function on the default.asp of mydomain1.com webserver.



If function.asp is not used, then following code can be used to start the session in default.asp page



< %



Set objSession = Server.CreateObject("Session.Management")



objSession.SessionStart()



Set objSession = nothing



% >



To assign session variables in mydomain1.com



< %



Set objSession = Server.CreateObject("Session.Management")



objSession.CheckSession()



objSession.SetSession "givenname", John



objSession.SetSession "sn", Anderson



objSession.SetSession "mail", John@Anderson.com



objSession.SetSession "userPassword", password



objSession.SetSession "accountStatus ", 1



Set objSession = nothing



% >



To retrieve Session variables



< %



Dim strFirstName, strLastName, strEmailAddress



Dim strPassword, intStatus



Set objSession = Server.CreateObject("Session.Management")



objSession.CheckSession()



strFirstName = objSession.GetSession ("givenname")



strLastName = objSession.GetSession ("sn")



strEmaiAddress = objSession.GetSession ("mail")



strPassword = objSession.GetSession ("userPassword")



intStatus = objSession.GetSession ("accountStatus ")



Set objSession = nothing



% >



  

     

Sharing Session Variables   





      To share the session variables between domains, one need to pass the SessionGUID value to the other

domain. aSMS maintains session by using this SessionGUID. This can be done by passing the ‘SessionGUID’

cookie value to other domain by either query string or by hidden form field.



>

MyDomain2.com< /a>



Add few lines just after SessionStart code in default.asp of mydomain2.com domain.



< %



Set objSession = Server.CreateObject("Session.Management")



If Request.QueryString ("SessionGuid") <> "" Then



Response.Cookies ("SessionGuid") = Request.QueryString ("SessionGuid")



Else



objSession.SessionStart()



End If



Set objSession = nothing



% >



To retrieve mydomain1.com’s session variables



< %



Dim strFirstName, strLastName, strEmailAddress



Dim strPassword, intStatus



Set objSession = Server.CreateObject("Session.Management")



objSession.CheckSession()



strFirstName = objSession.GetSession ("givenname")



strLastName = objSession.GetSession ("sn")



strEmaiAddress = objSession.GetSession ("mail")



strPassword = objSession.GetSession ("userPassword")



intStatus = objSession.GetSession ("accountStatus ")  



objSession = nothing



% >  



This way we can share session variables between two different domains using aSMS.



  

     

Scenarios, where sharing Session Variables Across Domains may be required





Sharing session variables is required in so many types of web scenarios. Some of them are-



1. Common Login between two different domains - If you don’t want the users who have logged in

mydomain1.com to once again be validated in mydomain2.com.



2. Sharing Session variables with your B2B partner.



3. Developing your own ‘Microsoft Passport’ like web site.





  



Conclusion    

  

       Here we have seen how by using aSMS one can easily share session variables across two different

domains. This method has been actually implemented on live web sites. Menswear.com

(http://www.menswear.com) and Womenswear.net (http://www.womenswear.net ) use aSMS to share session state

across two of their domains. When users go from menswear.com to womenswear.com, they need not re-login.

Users need to login only at either menswear.com or at womenwear.com. The authentication details are shared

between two domains.



Download sample code for this page.

http://files.driveway.com/download/vapp03-653b18dcaf1f3ccb/28271119/Sharing+Session+Variables+Samples.zip








相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案