有两个系统A和B
需要在A单点登录到B进行B系统的操作
借助Iframe的方式,在嵌入B系统页面时实现B系统的登录
由于B系统是通过Session保存用户名的,但是通过A系统请求无法获取到Session
网上搜索后尝试用
protected override void OnInit(EventArgs e)
{
Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TATi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
}
但是不好用,哪位有经验说说,多谢~!
需要在A单点登录到B进行B系统的操作
借助Iframe的方式,在嵌入B系统页面时实现B系统的登录
由于B系统是通过Session保存用户名的,但是通过A系统请求无法获取到Session
网上搜索后尝试用
protected override void OnInit(EventArgs e)
{
Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TATi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
}
但是不好用,哪位有经验说说,多谢~!
如果是,找到"ASP.NET_SessionId"然后A系统把B的SessionId设置下
类似下列语句
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "B's Id"))
这样A系统和B系统用的就是同一个Session
过了生命周期就会重新为用户创建一个新Id
但是用户可以自己指定SessionId,就像用B系统登录后,如果知道B的sessionId,然后在A里设置
这样A就会和B同用一个Session(当然A自己的session会丢失,这是要考虑的问题)最简单看可行性的方法是,楼主先用B(IE)登录下,用 Fiddler找到SessionId
然后用Firefox登录下A,调用document.cookie='ASP.NET_SessionId=***';
看看A能不能访问到B中Session的东西
过了生命周期就会重新为用户创建一个新Id
但是用户可以自己指定SessionId,就像用B系统登录后,如果知道B的sessionId,然后在A里设置
这样A就会和B同用一个Session(当然A自己的session会丢失,这是要考虑的问题)最简单看可行性的方法是,楼主先用B(IE)登录下,用 Fiddler找到SessionId
然后用Firefox登录下A,调用document.cookie='ASP.NET_SessionId=***';
看看A能不能访问到B中Session的东西
如果是个可变的值,那这个就不可行
而且只有IE跨域会丢掉session,其他浏览器是好用的
session Id变了意味着Session过期了
那样即使B中的Session也会过期