首页 新闻 会员 周边 捐助

Asp.net中从登录页面登录之后关于浏览器本身的前进后退问题

0
悬赏园豆:140 [已解决问题] 解决于 2010-05-07 23:17

各位前辈,大哥们:小弟是新手来的!昨天在做项目的时候!做到后台登录时出现了这样的一个问题:就是用户从登录页面正常登录后,可以通过浏览器的返回按钮返回到登录页面!且又可以从登录页面直接返回到之前登录后的页面!小弟昨天情急之下看了网易的邮箱登录功能!

发现:从网易邮箱登录页面正常登录后,可以点击浏览器时,可以返回到登录页面(好像那个页面是重新下载的),且返回后也无法通过前进按钮直接前进到之前登录之后的页面!

请问:网易邮箱它那个功能要怎么实现的!我们asp.net有没什么方法解决很好的解决这类问题的?

问题补充: 我那个权限验证之后用的是session存储的!
幻&影的主页 幻&影 | 初学一级 | 园豆:8
提问于:2010-05-07 11:36
< >
分享
最佳答案
0

我试了下不行,后退时不刷新页面的,也就是说后退不会执行任何代码。

有种方式,就是用showModalDialog方式进入页面就可以,因为就没有前进、后退按钮了。

收获园豆:50
小胆粗心 | 菜鸟二级 |园豆:300 | 2010-05-07 16:28
嗯,是的!但是我感觉不大能用于后台系统的登录!我用的方法是在提交的时候清楚下浏览器的历史的!谢谢你的关注哈!
幻&影 | 园豆:8 (初学一级) | 2010-05-08 22:45
其他回答(5)
0

登陆成功的页面是需要权限认证的,如果你登陆成功,状态(Session)已经得到认证并存储,返回登陆页面是正常的,再返回登陆成功能页面当然也可以(除非你在登陆页面清楚用户的登陆状态)。

收获园豆:10
Astar | 园豆:40805 (高人七级) | 2010-05-07 11:44
这个我知道的!问题是浏览器自带的前进和后退按钮点击的时候,我要怎么实现驱动相关的事件呢?
支持(0) 反对(0) 幻&影 | 园豆:8 (初学一级) | 2010-05-07 11:54
@幻&影:网上找一下禁止用户点击浏览器“后退”的方法。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-05-07 13:08
你倒底想实现什么?不允许用户点后退/前进?还是用户点后退/前进的时候做点什么?
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-05-07 14:35
@Astar:能不能实现到那个点击后退时,判断如果到登录页面时就把登录以前的历史信息清空掉!再重新回到登录页面的!在此先谢谢你了!(我也知道在服务器端是无法做到完全来禁止客户端浏览器的前进后退是不现实的!)
支持(0) 反对(0) 幻&影 | 园豆:8 (初学一级) | 2010-05-07 15:45
@幻&影:你在登陆页面的Page_Load里做个判断,如果用户已经登陆(Session),就清楚相关登陆信息(Session状态和Txt中的信息),如果用户登陆状态为空,这时候不用清楚,说明用户第一次来。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-05-07 16:59
@Astar:他是浏览器后退前进是不会触发到cs的任何事件的!不过还是很谢谢你的关注!
支持(0) 反对(0) 幻&影 | 园豆:8 (初学一级) | 2010-05-07 23:14
0

一般的话,登陆页面page_load里面检测用户是否已经登录了,如果是登陆了,则跳转到登陆后的页面。这也样已经点后退,他又会跳回来,感觉这样更好,退出之后才能访问登陆的页面。

如果你一定要像网易那样的。那就在page_load页面加载的时候如果已经登陆了就退出登陆就行了。

LittlePeng | 园豆:3445 (老鸟四级) | 2010-05-07 12:02
这个我试过了,但是在浏览器那里自带的后退和前进点击的时候是无法驱动Page_load页面加载的!
支持(0) 反对(0) 幻&影 | 园豆:8 (初学一级) | 2010-05-07 12:47
@幻&影:虽然你的回答对我的用处不大不过还要谢谢你哈!
支持(0) 反对(0) 幻&影 | 园豆:8 (初学一级) | 2010-05-08 22:46
0

登录成功后,Response.Redirect(url);

url是成功后跳转的页面,这样就不会有你不想要的 前进 和后退了

收获园豆:80
千羽 | 园豆:666 (小虾三级) | 2010-05-07 13:10
唉!这个重定向我早就用了,还是可以后退的
支持(0) 反对(0) 幻&影 | 园豆:8 (初学一级) | 2010-05-07 13:13
@幻&影: Response.Buffer=true; Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1); Response.Expires=0; Response.CacheControl="no-cache";
支持(0) 反对(0) LittlePeng | 园豆:3445 (老鸟四级) | 2010-05-07 20:13
@幻&影: 设置一下页面缓存
支持(0) 反对(0) LittlePeng | 园豆:3445 (老鸟四级) | 2010-05-07 20:14
@明天.Net:这倒是一个解决办法!谢谢哈!
支持(0) 反对(0) 幻&影 | 园豆:8 (初学一级) | 2010-05-08 21:56
0

使用下面的代码试试:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Response.Expires
= -1;

Response.AddHeader(
"pragma", "no-cache");

Response.AddHeader(
"cache-control", "no-cache");

Response.CacheControl
= "no-cache";

Response.Cache.SetNoStore();

 

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2010-05-07 15:42
你这个用Response.Redirect()貌似没用的!只能用<script>Location.href='url'</script> 脚本跳转才有用的!且清空后退回去只是让他无法访问到后退后的页面!之前我是用过的! 且想要完成网易那样的类似功能是很复杂的!老师也推荐我查找了一些相关资料!只是鉴于结果太繁琐和复杂!还有就是我后退和前进貌似不触发任何事件!也就不存在安全问题了!所以我暂时只用了那个location脚本跳转的方法让他跳转后消除访问页面之前的历史!不过还是要谢谢你的关注!
支持(0) 反对(0) 幻&影 | 园豆:8 (初学一级) | 2010-05-08 23:08
0

只要你做好权限,和session过期时间,以及session过期时间,要退就退了呗,有什么大不了

小AI | 园豆:354 (菜鸟二级) | 2010-05-07 19:32
呵呵!你说得不错!有时候是不能太过在于一个问题上较真!合理的后退一步有时会让自己心情好点!不过就得到地少了!谢谢你的关注!
支持(0) 反对(0) 幻&影 | 园豆:8 (初学一级) | 2010-05-08 23:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册