一个奇怪的问题,大家帮忙解决下
我是个菜鸟,用asp.net写了一个简单的登陆功能,大概是这样
default.aspx是登陆页面
登陆成功跳转到main.html页面,此页面用的是框架结构,含三个.aspx页面。
我在每个页面都有判断是否登陆超时的代码,代码如下
C# code
protected void Page_Load(object sender, EventArgs e)
{
//是否已经登陆
if (!IsPostBack)
{
if (Session["login"] == null)
{
Response.Write("<script language='javascript'>alert('登陆已超时,请重新登陆!');window.parent.location='default.aspx';</script>");
return;
}
}
}
现在出现这样的情况,在IE9(其它版本的ie没测试)下,如果超时,能提示并自动转到default.asp页面,但无法正常登陆了,点登陆后就立刻弹出alert('登陆已超时,请重新登陆!');但在火狐下测试正常,请问怎么解决?
另外想请教下,有没有更好的实现方法?
------解决方案--------------------if (Session["login"] == null)
{
Response.Write("<script language='javascript'>alert('登陆已超时,请重新登陆!');window.parent.location='default.aspx';</script>");
return;
}
这句应该在 ispostback 外面 并且要在ispostback前面
不管你是不是postback都得判断用户是否登录。
登录页面不要做这一判断,因为你要登录,否则你永远登录不了
------解决方案-------------------- //是否已经登陆
if (!IsPostBack)
这个本身就不对,不管是不是回发,都要判断,不过影响不大,你跟踪下 看先session的值是不是有问题?
------解决方案-------------------- if (Session["login"] == null)
{
Response.Write("<script language='javascript'>alert('登陆已超时,请重新登陆!');window.parent.location='default.aspx';</script>");
return;
}
不知道你的这段代码是在什么位置,应该是在点击登录按钮的时候首先执行了这段代码,按照一般登录页面的方法,这段代码没必要放在登陆页,因为登录页面没有任何权限操作,只是判断用户名和密码是否正确,正确之后跳转到合适的页面,这段直接删掉就行
------解决方案--------------------有一种猜测就是你在登陆页面成功后. 木有给Session["login"]木有存入值.