为了防止用户直接在地址栏中输入网址 到达对应页面 我做了如下处理
在 pageload 里判断是否有session["userID"] 如果=null 跳转登陆页面但是有个问题 如果已经登陆 直接复制url 到地址栏 就可以直接访问 相应页面 绕开了权限控制我现在的想法是 判断地址栏的url 是否含有? 如果有跳转登陆 我地址栏的url始终是index.aspx我现在找的方法 都是取请求的url    (Request.RawUrl) 这方法取到的是真实的请求url 我想知道取地址栏的url 怎么取还有我想问大家是怎么解决用户在地址栏中直接输入网址 我这样做 对吗?

解决方案 »

  1.   

     asp.net继承page类重写方法 实现最基本的用户登录验证 权限验证
      

  2.   

    用Session的目的就是规定时间内保存用户的登录信息你只能是在不同的页面设置不同的权限,如果Session的用户对此页面没有权限则返回到你的登录页面
    参考forms验证
      

  3.   

    3楼正确,如果每个页面都有session判断,用户不可能直接输入url绕开权限控制。你肯定是只在登陆页面检查session,别的页面都没做
      

  4.   

    写个BAGEPAGE类,这个 class继承了page ,然后Override pageload 写个session的判断。
      

  5.   

    权限控制,每个页面指定权限的唯一标识,由继承于page的类去处理,对每个角色都可分配权限,精确到按钮事件
      

  6.   

    判断 Request.UrlReferrer 属性 
      

  7.   

            User user = (User)Session["user"];
            if (user != null && user.UserRole.Id != 3 || user == null) 
                 Response.Redirect("~/Admin/AdminLogin.aspx");这样是可以的啊!
      

  8.   

    有必要么?而且这样.你最多也就通过一些js代码银行url地址.但是第三方的浏览器一定会显示url地址的
    你可以在url地址中加入随机数?rand=xxxx
    关于这个随机数是你怎么得到的.就只有你知道了.可以按照权限.
    比如有些页面的xxxx能被3整除什么的来判断.
      

  9.   

    你肯定是别的画面没有做session判断,建议你多看看session机制
      

  10.   

    我是写一个基类,所有的页面都继承它,里面一个方法,接收一个页面ID,用户的ID,然后判断权限表里是否有此页面的权限.再来处理
    这个办法笨了一点,但是绝对的有效
      

  11.   

    Request.UrlReferrer  不行么 ?   直接输入的就是null,自动跳转到index就行 。