有三页面,login, p1,p2 ,其中 p1,p2必须从login登录访问,如欲强行通过输入地址访问,则指向login,现在的问题是:只要我登录了p1,p2,其中一页而不关闭IE,就可以通过在地址栏里修改地址而直接访问,这样就存在了一定的安全问题,怎么解决这个问题呢?(就是要实现:即使已经登录了其中一页,但如果想通过在地址栏里修改地址而直接访问另一页,则强行指向login重新登录)

解决方案 »

  1.   

    web.config里修改授权
    <Authorizaton>
      <deny user="?">
    </Authorizaton>
      

  2.   

    我不知道该如何设,比如说:p1,用user1;p2用user2
      

  3.   

    在login里,应该是在一个button_click()事件里,写上this.session.add(this.session.sessionID,userName),然后在p1,p2里page_load()里判断
    if(this.session[this.session.sessionId]==null)
      this.response.redirect("login.aspx");
      

  4.   

    直接就像样coollzh(良子) 那样就行了.<deny user="?">里面的?不用改的.
      

  5.   

    按照coollzh的设置还是不行,可以直接访问
      

  6.   

    对了,<Authorizaton>
      <deny user="?">
    </Authorizaton>
    这一节是不是要通过验证cookie里设置的用户,密码才会有用的,而我用的是数据库验证
      

  7.   

    同意大猫的意见,不过可改Response.ReDirect 为:Server.Execute() 更好!
      

  8.   

    这个方法根本不行,因为我登录一次之后就会生成一个SESSION,只要它不过期,this.session[this.session.sessionId]==null 这个条件肯定不满足,就不会指向login ,修改地址仍旧可以访问
      

  9.   

    你不能在End_session中写个Session["username"]=null
      

  10.   

    to xiongying860421: 不好意思,我对Session不是太熟(确切地说对整个asp.net都不熟),不知道你说的具体是怎样一段代码,添加在何处?
      

  11.   

    我知道了,在Global里边,但还是不管用,救命啊!!!
      

  12.   

    p1,p2使用两个不同的login页面,使用的session的名字也不同
      

  13.   

    to: lovecrayfish(阿龙)
    修改地址仍旧不可以访问,新访问时生成的sessionId已经变了,而且没有被加入sessions里,所以这个判断this.session[this.session.sessionId]==null 必然满足。因而会指向Login,好好研究一下session把
      

  14.   

    Session我的确不熟,可你的方法我也试,问题依然