23.我已经设置了admin目录不允许匿名登陆,可是我的session已经没了,为什么还能访问呀.
<authentication mode="Forms">
<forms loginUrl="default.aspx"></forms>
</authentication>
<location path="admin">
<system.web>
<authorization>
<deny users="?"></deny>
</authorization>
</system.web>
</location>
我用trace输出一个session值,显示是空的,因为当时session已经超时了,可是admin目录下的页还能访问,因为session丢失了,所以一些考session定制的页面显示效果就不一样了,我这个系统的权限系统也是考session维持的,在能访问admin目录的情况下session却已经超时了,造成好多不能预见的错误,这个问题怎么解决呀,怎么设置如果session超时了自动转向到登陆页呀.

解决方案 »

  1.   

    顶上去,
    我想在golbal.asax里的加些语句,如下
    protected void Session_End(Object sender, EventArgs e)
    {
    System.Web.Security.FormsAuthentication.SignOut();
    Response.Redirect("default.aspx"); }
    可是还是不行呀,那只有写个页面基类,并在基类里让session超时时注销form验证,可是我开发程序的时候没有写页面基类,还有别的方法设置一下,让admin目录下的所有页运行的时候都执行一个方法吗?能在web.config里配置admin目录下的所有页都继承自某个页面基类吗?
      

  2.   

    你用的是窗体验证身份方式,和Session无关,它和身份验证票有关。
      你是用它实现的吧,FormsAuthentication.SetAuthCookie("YouAuth",false);
    System.Web.Security.FormsAuthentication.SignOut();
    这个函数能注销Form 身份验证票。
      

  3.   

    那我在Session_End事件理加上你写的代码就可以了吗?有人说把cookies和session的timeout值设置成一样的就行了,这样可以吗?