在弹出页面时,如何判断已Session过期,而不弹出,直接返回登陆页面?谢谢

duyhui 2010-01-15 06:16:55
正常的页面判断session过期,都返回到登陆页面。但我的页面中,有些页面中的数据包含超链接,用户点击就弹出页面,可以看到明细数据,我用<a href=“url?ID=1” target=_blank> 这样实现。

但现在的问题是,如果Session超时了,用户点击数据的超链接,在明细页面里,我判断session过期了,会转到登陆页面,所以给用户的感觉相当于弹出了一个登陆页面。我现在想,怎么能在弹出时就判断session过期了,不弹出,而直接让原来的页面转到登陆页面呢?

谢谢大家!!
...全文
347 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lisatisfy 2011-10-26
  • 打赏
  • 举报
回复
用ajax先去判断下是否过期,如果过期打开登录页面。
fb13579 2010-01-18
  • 打赏
  • 举报
回复
用ajax
首先该一下超链接的形式:
<a href ="javascript:onclick='js函数'">

js中用ajax 判断session 是否失效
var oHttpReq = new ActiveXObject("MSXML2.XMLHTTP");
var oDoc = new ActiveXObject("MSXML2.DOMDocument");
oHttpReq.open("POST", "A.aspx", false);
oHttpReq.send("");
result = oHttpReq.responseText;
   oDoc.loadXML(result);
var items1 = oDoc.selectNodes("//DataSet/Table/ErrorCode");
   if(items1.length !=0 && items1[0].text !="0")   {

///session 失效 处理
   }
///session 正常处理

页面A pagelaod 是否判断session 是否失效 。失效返回ErrorCode =0

重点代码如下:
if(this.Session["值"] == null)
{
DataTable tab = new DataTable();
tab.Columns.Add(ErrorCode);
DataRow row = tab.NewRow();
row[OperConfig.ErrorCode] = "-1";
tab.Rows.Add(row);
tab.TableName ="Table";
DataSet ds = new DataSet();
ds.DataSetName = "DataSet";
ds.Tables.Add(tab);
XmlTextWriter writer = new XmlTextWriter(Response.OutputStream,Response.ContentEncoding);
   writer.Formatting = Formatting.Indented;
   writer.Indentation = 4;
   writer.IndentChar = ' ';
   ds.WriteXml(writer);
   writer.Flush();
   Response.End();
   writer.Close();
return;
}
duyhui 2010-01-17
  • 打赏
  • 举报
回复
谢谢各位的回复,页面的Session判断我已经做处理了,我的问题是在Session过期后,用户在点击数据链接查看明细的时候,我不想再弹出页面,而是直接让原页面转到登陆页面,但由于数据连接用 了<a href=“url?ID=1” target=_blank> 这样的方式实现弹出的明细页面。所以弹出的过程我没法捕捉到。大家有没有好的方法,是不是只能改成服务器控件才能处理?
xiedu414 2010-01-16
  • 打赏
  • 举报
回复
将超链接改成LinkButton 并在cs中的click事件中判断。
输入弹出框的JS脚本代码推荐7楼的。
kingcsx666 2010-01-16
  • 打赏
  • 举报
回复
关闭,在转向url
zhouwei7682719 2010-01-16
  • 打赏
  • 举报
回复
清楚 Cookies
public static void ClearCookies()
{
int c = HttpContext.Current.Request.Cookies.Count;

for (int i = 0; i < c; i++)
{
HttpCookie hc = HttpContext.Current.Request.Cookies[i];
hc.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(hc);
}
}
zhouwei7682719 2010-01-16
  • 打赏
  • 举报
回复
使用chookie吧!!
jenny0810 2010-01-16
  • 打赏
  • 举报
回复

if(Session["admin"]==null)
{
responst.redirect("Login.aspx");
}
khjian 2010-01-16
  • 打赏
  • 举报
回复
楼上都给出了
since_net_lyc 2010-01-16
  • 打赏
  • 举报
回复
up!
越过越咸 2010-01-16
  • 打赏
  • 举报
回复
if(session[X]==null)
{
Response.Redirect("x.html");
}
else
{
Response.Redirect("");
}
ziyouren521125 2010-01-16
  • 打赏
  • 举报
回复
在明细页面里,用Response.Redirect("登陆页面")
teerhu 2010-01-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
在后台通过RegisterStartupScript执行window.open
弹出链接页面
或在BasePage中判断,直接关闭弹出的页面
[/Quote]
UP
O爱咋咋地O 2010-01-15
  • 打赏
  • 举报
回复
用服务器控件 不行吗? 再在当前控件的page_load里 判断session 是否过期
skyqingtian 2010-01-15
  • 打赏
  • 举报
回复
if(Session["ID"]==null)
{

ClientScript.RegisterClientScriptBlock(this.GetType(), "ss", "window.open('Login.aspx','_parent')", true);
}
这样子如果得话,如果你Session为空的话就会覆盖原先的页面弹出登陆页面的

gaoqingchun2007 2010-01-15
  • 打赏
  • 举报
回复
if(Session["admin"]==null)
{
string str=" <script>top.location.href='login.aspx' </script>";
Response.Write(str);
}
imfor 2010-01-15
  • 打赏
  • 举报
回复
if(Session["admin"]==null)
{
string str="<script>top.location.href='login.aspx'</script>";
Response.Write(str);
}
lirenniao 2010-01-15
  • 打赏
  • 举报
回复
关闭当前页面,打开新页面
wuyq11 2010-01-15
  • 打赏
  • 举报
回复
在后台通过RegisterStartupScript执行window.open
弹出链接页面
或在BasePage中判断,直接关闭弹出的页面
AngleBabyHong 2010-01-15
  • 打赏
  • 举报
回复
记录session 时间,如果到时间了就直接跳转到登录。
加载更多回复(1)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧