我在登陆页面中给Session变量赋值,Session("id")=dr.getValue(0)从数据库中读取用户的角色。在其它页面判断Session("id")的权限是否符合要求。可是我先用普通用户登陆到系统,可以实现对用户的限制,但换用超级用户登陆时超级用户的权限同样被限制了。不知道为什么。哪位高手能指点指点谢谢!!!有没有解决方法。我的开发环境是VS2005+SQL2005

解决方案 »

  1.   

    Session("id")
    你这里面存的是什么 用户名??
    你应该存权限级别比如
    admin   1
    xxx1    2
    xxx2    3在页面里判断级别
      

  2.   

    ASP.NET不是内置的有Roles验证机制么,为什么要自讨麻烦呢。
    如果这样设计的话,一注意Session超时或为空,二在登陆的时候设置正确的Session。不过,你这问题不一定是Session的问题,你所谓的“但换用超级用户登陆时超级用户的权限同样被限制了”怎么讲,调试过Session没,在设置Session和判断Session的地方分别断点看下Session值对不对就知道问题在哪了,去掉try以暴露错误
      

  3.   

    断个点,看看你session里的值是多少,是哪个用户的ID就知道了。估计是你前一次登陆的都没取消掉。
      

  4.   

    我用SESSION只是想定义一个全局类型的变量(在没个页面都可以访问的变量),用变量存放数据库中的用户角色,在每次页面加载时从变量中读取用户的角色从而判断用户是否有权访问此页面。
      

  5.   

    我有个疑问SESSION中的变量要特意清空吗。当第一个人登录时SESSION("ID")=B第二个人登录时SESSION("ID")=A不是又进行了一次赋值吗。原来的值还有存在的可能吗??请各位大侠指教。
      

  6.   

    一般用户登录 => Session("用户权限") = 一般用户;
    超级用户登录 => Session("用户权限") = 超级用户;
    在页面上登出时,将 Session("用户权限") 清空, 重新登录时重新赋值.
    =============
    用Session存放是浏览器进程级别的,浏览器一关闭Session就失效了(相对的,对象还在,但是新开的页面是不同的ID了,找不到原来的ID了)
    (不同浏览器对标签/选项卡的处理不一样,IE8同一个浏览器窗口下所有的选项卡共享Session的)楼主:"我用SESSION只是想定义一个全局类型的变量(在没个页面都可以访问的变量),用变量存放数据库中的用户角色,在每次页面加载时从变量中读取用户的角色从而判断用户是否有权访问此页面。"
    应该用Cookie + Session 同时操作
    参考: http://www.360doc.com/content/06/0503/12/73_109481.shtml