当前位置: 代码迷 >> ASP.NET >> 一个奇怪的有关问题,大家帮忙解决下
  详细解决方案

一个奇怪的有关问题,大家帮忙解决下

热度:9092   发布时间:2013-02-26 00:00:00.0
一个奇怪的问题,大家帮忙解决下
我是个菜鸟,用asp.net写了一个简单的登陆功能,大概是这样

default.aspx是登陆页面

登陆成功跳转到main页面,此页面用的是框架结构,含三个.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"]木有存入值.
  相关解决方案