(转)showModalDialog中打开新页面Session丢失

2024-02-28 08:30

本文主要是介绍(转)showModalDialog中打开新页面Session丢失,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我在showModalDialog中打开一个超链接,target="_blank"
在新弹出的页面中会发生Session丢失的现象,我监测SessionID发现新页面中SessionID和父页面不一致了.说明新窗口中又重新建了一个回话.另外,这种现象不是每次都有,但是偶尔会发生.
但是我在Web.config中配置了如果SESSION为空就会跳到登录页.所以我在点开这个超链接的时候会打开一个登陆页-_-!
请教高人指点一下怎么改,谢谢了.
PS:网上有一种在打开模态对话框时将父页的window作为参数传递进来,然后通过dialogWindowArgs.open弹出新界面的方法,但是我们公司大多数人(特别是领导)的IE7都设置成了"遇到新窗口时直接在新选项卡中打开",所以如果是超链接设置为target="_blank"时会弹出新页面;而以window.open方式打开的话会以新选项卡方式打开,就必须先关闭模态对话框才能点开那个新选项卡-_-!项目是给公司自己用的OA,所以要照顾大多数人(特别是领导)的习惯...
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
回复次数: 42
  • 5653325用户头像
  • 5653325
  • (好人也是人。)
  • 等 级:
#1楼 得分:0回复于:2008-11-21 09:29:25
那就用cookies
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐: c# 中 bool 与 Boolean 什么有什么区别
  • 5653325用户头像
  • 5653325
  • (好人也是人。)
  • 等 级:
#2楼 得分:0回复于:2008-11-21 09:35:02
或者把session用StateServer模式 而不是默认的InProc模式看看
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐: 年后写的一点代码
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#3楼 得分:0回复于:2008-11-21 09:41:08
引用 1 楼 5653325 的回复:
那就用cookies


现在不可能改成用cookie了,这东西都用好几年了.只不过刚新加一个功能.
session用StateServer模式的话运行起来会有问题,这个就更麻烦了.
我想找一种在showModalDialog下不丢失SESSION的方法.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐: 由1,2,3,4,1.1组合小于6的组合一共有多少种,什么算法可以完全遍历出来
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#4楼 得分:0回复于:2008-11-21 09:48:22
晕了,刚换成showModelessDialog后,SessionID相同的情况下还会跳到登陆页-_-!
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐: 【原创+分享】VS2005水晶报表PUSH模式(DataSet)视频教程+源代码工程示例
  • mengxj85用户头像
  • mengxj85
  • (漂零)
  • 等 级:
#5楼 得分:0回复于:2008-11-21 09:48:28
顶一下,可以考虑用自定义弹出窗口
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
精华推荐: 新春送吉祥,两手都要抓,一软一硬:)
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#6楼 得分:0回复于:2008-11-21 09:49:12
在模态框里重新登陆以后这种情况就消失了.
但说不准什么时候就又出现了...
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • criedshy用户头像
  • criedshy
  • (我已经戒烟很久了)
  • 等 级:
#7楼 得分:0回复于:2008-11-21 09:49:56
丢失session是不是因为.Timeout了   
   设置session.timeout=一个更大的值
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • criedshy用户头像
  • criedshy
  • (我已经戒烟很久了)
  • 等 级:
#8楼 得分:0回复于:2008-11-21 09:50:33
请确定 !你页面开启的循序!! open 代表 window.open 
modal 代表 window.showModalDialog 
Y session 不会丢失 
N session 会丢失 

open/open/open Y /Y/Y 

modal/modal/modal Y/Y/Y 

open/modal/open Y/Y/N 

modal/open/modal Y/N/N 

Open/modal/modal Y/Y/Y 

Modal/open/open Y/N/N 

你看看 你的页面打开模式 属於那种!!是否是丢失数据去情况 

补充: 你这种 情况是 open 一个页面 再modal 
在modal 里面提交。。。 
modal 里面是不允许提交的。。。 
提交就丢失数据 
你可以 将 modal 处理后的 值 放到 父窗体 里面去 然后再提交,,, 
由父窗体 去提交
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • criedshy用户头像
  • criedshy
  • (我已经戒烟很久了)
  • 等 级:
#9楼 得分:0回复于:2008-11-21 09:52:24
从 HTML 模式或无模式对话框可能没有打开同一进程中 InternetExplorer 窗口中打开,因此模式窗口中调用 window.open()方法打开具体页面,可能造成session 丢失.例如:主窗体a.aspx,点击按钮时采用window.showModalDialog,打开弹出窗体b.aspx,b.aspx为模式窗体,然后在b.aspx窗体中再用window.open方式打开窗体c.aspx时,session会丢失。

    解决方法:
       思路: 调用 a.aspx window 的 open 方法打开

       a.aspx 中window.showModalDialog 调用方法传递 dialogArguments属性为 window 对象
       window.showModalDialog("b.aspx",window,"....") ;

       b.aspx 中
       var openobj = window;
if(typeof(window.dialogArguments) == "object")
{
     openobj =  window.dialogArguments;
}
  openobj.open("c.aspx");

    这样处理 c.aspx中 Session就不会丢失了。 
文章出处:http://www.diybl.com/course/4_webprogram/asp.net/netjs/2007112/82071.html
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#10楼 得分:0回复于:2008-11-21 09:53:32
引用 5 楼 mengxj85 的回复:
顶一下,可以考虑用自定义弹出窗口


所有的页面(除了模态对话框以外)都被加上了脚本(js文件),一但运行就最大化了-_-!
所以这个模态对话框尽量还是不要去掉.否则就没有这个效果了.也想过以DIV的形式代替模态框...但,改动量还是有点大了.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#11楼 得分:0回复于:2008-11-21 09:55:17
是有这种问题.

可以这样解决
<a href="Default2.aspx?session=<%=Session["a"]%>" target="_blank">test</a>
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#12楼 得分:0回复于:2008-11-21 09:57:22
引用 9 楼 criedshy 的回复:
从 HTML 模式或无模式对话框可能没有打开同一进程中 InternetExplorer 窗口中打开,因此模式窗口中调用 window.open()方法打开具体页面,可能造成session 丢失.例如:主窗体a.aspx,点击按钮时采用window.showModalDialog,打开弹出窗体b.aspx,b.aspx为模式窗体,然后在b.aspx窗体中再用window.open方式打开窗体c.aspx时,session会丢失。

  解决方法:
思路: 调用 a.aspx window 的 open 方法打开

a.aspx 中wi…


我遇到的是最后一种Modal/open/open Y/N/N 
你说的这个方法我在问题里已经描述过了啊.当IE7设置为"遇到弹出窗口时以新选项卡方式打开",就会造成用户体验的问题了,我必须关闭模态对话框才可以去打开那个页面.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#13楼 得分:0回复于:2008-11-21 10:00:28
如果你用 "_blank",  session肯定会是新的session的.
你要非这样做就用url传参过去.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#14楼 得分:0回复于:2008-11-21 10:05:44
引用 13 楼 lovehongyun 的回复:
如果你用 "_blank",  session肯定会是新的session的.
你要非这样做就用url传参过去.

我是这样写的,您看下对不对?
C# code
 
HyperLink hl = (HyperLink)e.Row.FindControl( " hlTitle " ); hl.NavigateUrl = " DEV_form.aspx?InstanceID= " + GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString() + " &PackageID= " + ((DataRowView)e.Row.DataItem)[ " PackageID " ].ToString() + " &CurrentStep=DisplayMode&Session= " + GetCurrentLoginUserName();

模态框里放的是GridView,用了模板列.最后一个参数将当前登陆的用户名传递过去了.
可是还是不行啊.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#15楼 得分:0回复于:2008-11-21 10:08:48
有个朋友告诉我用这种方式
C# code
 
hl.NavigateUrl = " DEV_form.aspx?InstanceID= " + GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString() + " &PackageID= " + ((DataRowView)e.Row.DataItem)[ " PackageID " ].ToString() + " &CurrentStep=DisplayMode&ASP.NET_SessionID= " + Session.SessionID;

但也不行,跳转到登陆页面后,SessionID和我父页的SessionID是相同的,这说明Session没有对啊,但为什么会跳到登录页呢...想不通.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#16楼 得分:0回复于:2008-11-21 10:31:45
引用 15 楼 lingdu_hua 的回复:
有个朋友告诉我用这种方式

C# code
hl.NavigateUrl = "DEV_form.aspx?InstanceID="+GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString()+
                "&PackageID=" + ((DataRowView)e.Row.DataItem)["PackageID"].ToString() +
                "&CurrentStep=DisplayMode&ASP.NET_SessionID="+Session.SessionID;



但也不行,跳转到登陆页面后,SessionID和我父页的SessionID是相同的,这说明Session没有对啊,但…

你传sessionid有什么用?
如果你要跳转到的那个页面对session做了验证.比如说判断session是否为null,为null就跳到登录页.如果你做了这样的判断那肯定会跳到登录页的.因为你"_blank"后弹出的页面是个新页面.session也是新的.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#17楼 得分:0回复于:2008-11-21 10:35:42
引用 14 楼 lingdu_hua 的回复:
引用 13 楼 lovehongyun 的回复:
如果你用 "_blank",  session肯定会是新的session的.
你要非这样做就用url传参过去.

我是这样写的,您看下对不对?

C# code
HyperLink hl = (HyperLink)e.Row.FindControl("hlTitle");
            hl.NavigateUrl = "DEV_form.aspx?InstanceID="+GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString()+
                "&PackageID=" + ((DataRowView)e.Row.DataItem)["PackageID"]…


传过去后要用Request[""]去取.
session的值传过去了.但是新开页面的session还是新的.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#18楼 得分:0回复于:2008-11-21 10:36:18
C# code
 
HyperLink hl = (HyperLink)e.Row.FindControl( " hlTitle " ); hl.NavigateUrl = " DEV_form.aspx?InstanceID= " + GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString() + " &PackageID= " + ((DataRowView)e.Row.DataItem)[ " PackageID " ].ToString() + " &CurrentStep=DisplayMode&Session= " + GetCurrentLoginUserName();

那我按您说的是这么写的,对吗?
Session还是会丢
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#19楼 得分:0回复于:2008-11-21 10:38:01
应该对吧.你看一下url上对吗.url对就是对了.
先把你DEV_form.aspx页中对session判断为null就跳到登录页面的语句注释了看一下url
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#20楼 得分:0回复于:2008-11-21 10:47:22
引用 19 楼 lovehongyun 的回复:
应该对吧.你看一下url上对吗.url对就是对了.
先把你DEV_form.aspx页中对session判断为null就跳到登录页面的语句注释了看一下url

我没有判断SESSION为空啊.这个功能是在Web.Config里:
XML code
 
<!-- 下面的配置将指定ASP.NET使用FormsAuthenticationModule类 --> < authentication mode ="Forms" > < forms loginUrl ="Login.aspx" protection ="All" /> </ authentication > <!-- 站点所有页面都拒绝所有匿名用户 --> < authorization > < deny users ="?" /> </ authorization >
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • fenyuxiao用户头像
  • fenyuxiao
  • (消逝的风)
  • 等 级:
#21楼 得分:0回复于:2008-11-21 10:51:44
这种情况我也遇到过了,后来实在没找到方法,就直接传参数过去,虽然解决了,但不知道有什么更好的办法,期待中!
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#22楼 得分:0回复于:2008-11-21 11:15:30
自己继续顶
求解决方案
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • yagebu1983用户头像
  • yagebu1983
  • (帮主)
  • 等 级:
#23楼 得分:0回复于:2008-11-21 11:16:27
传参数!!
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#24楼 得分:0回复于:2008-11-21 11:17:36
引用 22 楼 lingdu_hua 的回复:
自己继续顶
求解决方案


哦.用的forms验证啊.
登录的时候把 FormsAuthentication.SetAuthCookie(userName, true);第二个参数改成true
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#25楼 得分:0回复于:2008-11-21 11:22:18
把你登录里边这两行代码都改成true,我测试了一下.可以了.
C# code
 
FormsAuthentication.SetAuthCookie(userName, true ); FormsAuthentication.RedirectFromLoginPage(userName, true );
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#26楼 得分:0回复于:2008-11-21 11:25:38
不好意思,又试了一下.只要改这一个就行了.另一个语句不用改,如果你不想存永久cookie的话
C# code
 
FormsAuthentication.RedirectFromLoginPage(userName, true );


这个改语第二个参数改成true后,就再链到那个新页面就不会反回登录界面了.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • qinhl99用户头像
  • qinhl99
  • (林鸿)
  • 等 级:
#27楼 得分:0回复于:2008-11-21 11:28:29
net下导致Session失效的一种情况:js教本中使用window.open和window.showModalDialog时需要注意   
                   在项目中碰到过一种情况先用window.open打开1.aspx,1.aspx中用window.showModalDialog打开2.aspx,2.aspx中用window.open打开3.aspx,那么在3.aspx中取不到Session中的值。     
                 于是我先做了一个default.aspx页面,向Session中存入值,在后面的三个页面中,分别去取Session中的值。三个页面的打开方式不一样,共6钟情况,测试结果如下:     
     
                 打开顺序     
     第一个页面     
     第二个页面     
     第三个页面     
       
   open/open/open     
     Y     
     Y     
     Y     
       
   modal/modal/modal     
     Y     
     Y     
     Y     
       
   open/modal/open     
     Y     
     Y     
     N     
   modal/open/modal     
     Y     
     N   N     
   Open/modal/modal     
     Y     
     Y     
     Y     
       
   Modal/open/open     
     Y     
     N   N     
     
                 Open/modal/open指页面1,2,3的打开方式,用open打开页面1,页面1用modal打开页面2,页面2用open打开页面3。     
     
   “Y”表示可以取到Session中存入的值;“N”表示不能取到Session中存入的值。     
     
   测试环境win2000,ie6.0+sp1,多数情况下会出现;win2003,ie6.0+sp2,总是出现。     
     
                 modal打开页面后,在打开的页面再open打开新页面时,在新开的页面总会出现Session丢失的问题,所以,在脚本中使用window.showModalDialog打开页面后慎用window.open打开页面,会导致Session取不到。大家可以测试一下。     
     
                 深入考虑,是不是modal打开的页面再用open打开另一个页面时,ie认为这是新开了一个线程?总而言之,这是ie的一个bug吧。
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#28楼 得分:0回复于:2008-11-21 11:30:45
C# code
 
hl.NavigateUrl = " DEV_form.aspx?InstanceID= " + GVW_Dev.DataKeys[e.Row.RowIndex].Value.ToString() + " &PackageID= " + ((DataRowView)e.Row.DataItem)[ " PackageID " ].ToString() + " &CurrentStep=DisplayMode&Session= " + GetCurrentLoginUserName();

那这句还用写吗?
项目是用的MemberShip,我不知道里面写没写您那两句话,如果我在登录页写了会对项目造成影响么?
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#29楼 得分:0回复于:2008-11-21 11:39:58
那这句还用写吗? 
项目是用的MemberShip,我不知道里面写没写您那两句话,如果我在登录页写了会对项目造成影响么?

MemberShip应该也会有FormsAuthentication.RedirectFromLoginPage这样的语句.你查一下你的项目里,应该有的
那个语句你要是传就写吧.

你用的forms验证,直接HttpContext.Current.User.Identity.Name就能取到用户的.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#30楼 得分:0回复于:2008-11-21 11:49:14
引用 29 楼 lovehongyun 的回复:
那这句还用写吗?
项目是用的MemberShip,我不知道里面写没写您那两句话,如果我在登录页写了会对项目造成影响么?

MemberShip应该也会有FormsAuthentication.RedirectFromLoginPage这样的语句.你查一下你的项目里,应该有的
那个语句你要是传就写吧.

你用的forms验证,直接HttpContext.Current.User.Identity.Name就能取到用户的.


非感谢您!我不是用Session传东西,只是因为Form验证的原因导致一丢Session就跳登陆页.很让人头疼.
因为这个问题不是每次都出现的,所以我需要反复登录然后测试一下,如果没有问题的话下午就结帖~
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#31楼 得分:0回复于:2008-11-21 11:53:43
非感谢您!我不是用Session传东西,只是因为Form验证的原因导致一丢Session就跳登陆页.很让人头疼. 
因为这个问题不是每次都出现的,所以我需要反复登录然后测试一下,如果没有问题的话下午就结帖~
============
把这个改成true就好了.
FormsAuthentication.RedirectFromLoginPage(userName, true);

第二个参数的意思是
若要创建持久 Cookie(跨浏览器会话保存的 Cookie),则为 true;否则为 false。 

如果你不是持久cookie,那么cookie是基于浏览器进程的.所以你"_blank"新开页面会跳到登录页面.把RedirectFromLoginPage方法的第二个参数改为true可解决这个问题

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#32楼 得分:0回复于:2008-11-21 12:49:01
我发现加了那句话以后就会将登录的信息记录到cookie里了吧?
也就是原始的Form验证+cookie的机制了.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • fangshw用户头像
  • fangshw
  • (☆飞梦㊣╬→)
  • 等 级:
#33楼 得分:0回复于:2008-11-21 13:15:39
如果楼上各位的回答还不能解决你的问题的话,可以考虑用window.showModalDialog()打开页面传参数方法,或者直接用弹出层的方法来解决问题
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • baby_cz用户头像
  • baby_cz
  • 等 级:
#34楼 得分:0回复于:2008-11-21 13:27:35
把SESSION的值一起当作参数传过去行不?
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • wuxiaoqqqq用户头像
  • wuxiaoqqqq
  • (傲剑无语)
  • 等 级:
#35楼 得分:0回复于:2008-11-21 13:45:55
把Session的值做参数传过去吧,模态窗口是有这个问题。
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#36楼 得分:0回复于:2008-11-21 14:14:57
引用 32 楼 lingdu_hua 的回复:
我发现加了那句话以后就会将登录的信息记录到cookie里了吧?
也就是原始的Form验证+cookie的机制了.

false:cookie是基于当前浏览器进程的.
true:持久 Cookie(跨浏览器会话保存的 Cookie)

你通过"_blank"打开的新页面就相当于跨浏览器会话了.所以要把参数改为true
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#37楼 得分:0回复于:2008-11-21 14:41:27
引用 36 楼 lovehongyun 的回复:
引用 32 楼 lingdu_hua 的回复:
我发现加了那句话以后就会将登录的信息记录到cookie里了吧?
也就是原始的Form验证+cookie的机制了.

false:cookie是基于当前浏览器进程的.
true:持久 Cookie(跨浏览器会话保存的 Cookie)

你通过"_blank"打开的新页面就相当于跨浏览器会话了.所以要把参数改为true


设置为true的时候我想最后关闭主界面的时候把这个Cookie清掉,因为我不想下次访问页面的时候不登录而直接访问了...
这个该怎么搞呢?参数为true时的这个Cookie时间限制可以改吗?
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#38楼 得分:0回复于:2008-11-21 14:48:02
设置为true的时候我想最后关闭主界面的时候把这个Cookie清掉,因为我不想下次访问页面的时候不登录而直接访问了... 
这个该怎么搞呢?参数为true时的这个Cookie时间限制可以改吗?
====
要执行                
C# code
 
FormsAuthentication.SignOut();
进行注销
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lovehongyun用户头像
  • lovehongyun
  • (潇湘夜雨)
  • 等 级:
#39楼 得分:100回复于:2008-11-21 14:57:23
设置为true的时候我想最后关闭主界面的时候把这个Cookie清掉,因为我不想下次访问页面的时候不登录而直接访问了... 
这个该怎么搞呢?参数为true时的这个Cookie时间限制可以改吗? 
=======
你自己试一下.设置true的时候,关闭你的ie.然后再打开.应该还是要重新登录的.

FormsAuthentication.RedirectFromLoginPage(userName, true); //只改这一句的为true就好了.其它的不用改.
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • lingdu_hua用户头像
  • lingdu_hua
  • (看着老实,其实不老实)
  • 等 级:
#40楼 得分:0回复于:2008-11-21 14:57:38
太谢谢了,今天算是学到新东西了,以前对验证这块不熟悉,看来关键时候这东西还真起作用了!
谢谢!结帖了!
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • afahvbvb用户头像
  • afahvbvb
  • (afahvbvb)
  • 等 级:
#41楼 得分:0回复于:2008-12-17 13:17:38
mark
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • jjrolddog用户头像
  • jjrolddog
  • (jjrolddog)
  • 等 级:
#42楼 得分:0回复于:2010-11-11 11:52:15
mark
showModalDialog中打开新页面Session丢失

转载于:https://www.cnblogs.com/wangyt223/archive/2012/09/17/2689323.html

这篇关于(转)showModalDialog中打开新页面Session丢失的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/754944

相关文章

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

搜狗浏览器打开CSDN博客排版错乱问题解决

之前发生过几次,不知道什么原因。 今天一直用着好好的,打开一个csdn连接,显示404,博文被删除了,于是就用百度快照打开试试,百度快照打开显示的排版很乱也没找到有用信息。 后面再浏览CSDN博客就排版错乱,显示一个大大二维码图片。 尝试删除IE缓存无效,使用谷歌浏览是好的。 基本锁定就是搜狗缓存导致的,于是找如何删除搜狗缓存   清除后恢复正常

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

我成功在本地打开了Cesium啦!

1首先下载Node.js,我是跟着这篇下载的,https://zhuanlan.zhihu.com/p/77594251,不过这后面的我没弄对Cesium环境配置也没影响。 另外:我看其他推文说,在终端写node -v和npm-v查node和npm的版本可以检测node和npm是否下载成功。 2然后我在CesiumB站官号看的教学视频,跟着下载Cesium源代码。 Cesium基础入门1-零

PageOfficeCtrl支持直接打开服务器磁盘文件

一般来说,PageOfficeCtrl控件的WebOpen方法的第一个参数是待打开文档的URL,此URL可以是相对于当前页面的相对URL,也可以是相对于整个网站根的相对URL,还可以是http开头的完整URL,但是这个URL必须是当前网站的URL,不能跨域。 现在为了更加方便开发者编程,WebOpen支持打开服务器磁盘文件。也就是说,第一个参数可以写成服务器文件的绝对磁盘路径。例如: P

flask-login 生成 cookie,session

flask-login 生成 cookie,session Flask-Login login_user() 显示来自 Set-Cookie 标头的加密 cookie # 模拟一个用户类class User(UserMixin):def __init__(self, id):self.id = id@app.route('/login')def login():# 模拟用户登录过程user

不同饭局,如何说开场白才能打开氛围?教你一个万能公式

在人情社会中,饭局不仅是吃饱饭的场合,更是人际交往、情感交流的重要平台。无论是家庭聚会、商务宴请、朋友相聚还是同事联谊,一个恰当的开场白都能迅速打破沉默,营造温馨和谐的氛围。 针对现实生活中最常见的四种饭局,酱酒亮哥教你一个万能开场白公式,这个公式分为四步,当然,不是一步不落的照搬,需要灵活应用,挑其中的两步、三步就行了,只要打开氛围,我们的目的也就达到了。接下来我们一起学习一下,希望你在不同的

六种msvcp110.dll丢失修复的方法分享,有效快速修复msvcp110.dll丢失

在日常使用电脑的过程中,我们可能会遭遇各种程序运行错误,其中“msvcp110.dll丢失”是一种非常常见的问题。这个问题通常发生在尝试启动某些程序时,系统会弹出一个错误消息,提示“程序无法启动,因为计算机缺少msvcp110.dll”,这可能会让用户感到困惑和无助。幸运的是,这个问题有多种解决方法,本文将指导你通过几种简单的步骤来修复“msvcp110.dll丢失”的问题,让你的程序回到正常运行

使用Python控制Excel应用:打开与关闭工作簿的技术性探讨

目录 引言 一、安装必要的库 1. xlwings 2. openpyxl 二、使用xlwings打开和关闭Excel工作簿 2.1 启动和退出Excel 2.2 打开和关闭工作簿 2.3 创建新工作簿 三、使用openpyxl打开和关闭Excel工作簿 3.1 打开工作簿 3.2 保存和关闭工作簿 四、案例分析 4.1 读取Excel文件中的数据 4.2 写入数据到E

Session用法详解

本文引用http://www.accdb.net/article.asp?id=1115 阅读本文章之前的准备   阅读本文章前,需要读者对以下知识有所了解。否则,阅读过程中会在相应的内容上遇到不同程度的问题。   懂得ASP/ASP.NET编程    了解ASP/ASP.NET的Session模型    了解ASP.NET Web应用程序模型    了解ASP.N