form验证在框架下的问题
我用form验证(是上-左-右的页面框架结构,右边是主体部分)
一切正常,用户没有登录的化直接跳转到登录页面,
但是当用户登录后,三十分钟后页面过期,用户再点击一些没有访问过的页面时,主体部分就显示了登录界面,这样在此输入用户密码后网页就嵌套了,原来框架下的主体部分又显示了整个框架。我用的是如下语句:
Ticket = new FormsAuthenticationTicket(1,user,DateTime.Now, DateTime.Now.AddMinutes(30),false, "admin","/") ;
请问这个问题怎么解决?(我不希望通过设置参数true,永久保留cookie。)
问题点数:100、回复次数:9Top
1 楼mooddecode1980(心情解码)回复于 2005-01-31 16:41:06 得分 0
:)
-Top
2 楼hedonister(冰戈)回复于 2005-01-31 16:47:47 得分 0
看看代码Top
3 楼czhenq(...... fucking life. I want to change.)回复于 2005-01-31 17:24:22 得分 0
我的办法是结合javascript来解决嵌套问题
首先使用javascript找出嵌套网页中最上层的window对象,自定义一个函数,在需要的页面中的Page_Load()中调用
其中:bLogin:是代码文件中用来指示是否已经通过验证或者验证是否过期,必须声明为公共变量。
LoginUrl:重定向路径
function RedirectUrl()
{
var bLogin = "<%=bLogin %>";
var url = "<%=LoginUrl %>";
if(bLogin=="False")
{
var turl = window.parent.location;
var url="";
var obj = window.parent;
while(turl != url)
{
url = turl;
turl = obj.parent.location;
obj = obj.parent;
}
obj.location.replace(url);
}
}Top
4 楼sdcsdc77()回复于 2005-02-04 09:45:05 得分 0
<FRAMESET rows="72,*" frameBorder="0">
<FRAME src="top.htm" >
<FRAMESET col="72,*" frameBorder="0">
<FRAME name="index1" src="left.htm">
<FRAME name="index2" src="main.aspx">
</FRAMESET>
</FRAMESET>
框架就是最常见的上-左-右结构。
if (IsVerified())
{
Ticket = new FormsAuthenticationTicket(1,user,DateTime.Now, DateTime.Now.AddMinutes(30),false, "admin","/") ;
string HashTicket = FormsAuthentication.Encrypt (Ticket) ;
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket) ; Context.Response.Cookies.Add (UserCookie) ; //输出Cookie
Context.Response.Redirect ("Default.aspx") ; //默认回到起始页.
}
每次30分钟失效后main.aspx就变成了登录页面,而上,左的框架还在, 这样再次登录的时候main.aspx里就再次包含了上,左框架, 这样不就嵌套了么?Top
5 楼cqzhangq(空空)回复于 2005-02-04 09:50:09 得分 0
upTop
6 楼liulxmooo(娃娃)回复于 2005-02-04 09:56:11 得分 0
upTop
7 楼snowpine999([彼岸烟花][当你看到☆河灿烂,可会想起我?])回复于 2005-02-04 14:21:12 得分 0
upTop
8 楼Mars_grace(Mars)回复于 2005-02-04 14:48:53 得分 100
你可以在你的登陆页面上添加下面的脚本来试试
<script language="javascript">
if(top.location != document.location)
top.location = document.location;
</script>
这样应该不会再嵌套了Top
9 楼SmartBaiChi(啥都不懂,瞎晃悠!!)回复于 2005-02-04 14:57:31 得分 0
顶Top




