做了个系统,想防止直接输入URL进入某个页面。考虑了三种方法:
1.屏蔽掉IE的地址栏、菜单。
2.用session,慢的说
3.身份验证,具体怎么做?哪位大侠帮帮忙,给分给分!!!
或者有其它更好的方法?

解决方案 »

  1.   

    1 把页面地址和登录角色的关系写入数据库,
    比如某角色可以看那些页面2 写一个basepage类,检查当前登录者所属角色是否有浏览当前页面的权限3 在需要检查的页面的cs文件里继承该类
      

  2.   

    简单一点就在web.config文件里定义一下不允许匿名访问就可以了啊.
    或者用session判断if session("username")="" then 跳转到首页登陆页面
      

  3.   

    还可以用ServerVariables("HTTP_REFERER")来检查页面来源Request.ServerVariables("HTTP_REFERER")的工作方式下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")的:
    1.直接用<a href>
    2.用Submit或<input type=image>提交的表单(POST or GET)
    3.使用Jscript提交的表单(POST or GET)下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况:
    1.从收藏夹链接
    2.单击''主页''或者自定义的地址
    3.利用Jscript的location.href or location.replace()
    4.在浏览器直接输入地址
    5.<%Response.Redirect%>
    6.<%Response.AddHeader%>或<meta http-equiv=refresh>转向
    7.用XML加载地址
      

  4.   

    用session["userid"]来判断,在登陆的时候存进session,当掉线或者直接输入url是就跳转到登陆页面
      

  5.   

    hzBool(Boolean)  谢谢,我愁的就是有的是ServerVariables("HTTP_REFERER")能检测到的,有的不是,因为一些页面是redirect过去的(redirect是可以取到ServerVariables("HTTP_REFERER")的),一些是用js从客户端open的,不能取到
    PerfectStar(第一个获得图灵奖的中国籍男子) 不失为好方法,但是库表是已经定的,我不能随便添加。谢谢。
      

  6.   

    1 把页面地址和登录角色的关系写入数据库,比如某角色可以看那些页面2 写一个basepage类,检查当前登录者所属角色是否有浏览当前页面的权限3 在需要检查的页面的cs文件里继承该类
    同意,我们现在做的项目就是采用这种办法来控制的
      

  7.   

    楼主说不希望出现直接输入地址进入的方式,那他是有这个页面的操作权限还是没有呢?
    page_load里应该对这个session["userid"]的操作权限进行一下判断,如果有该页面的操作权限,我觉得直接输入url进入页面应该是不能被禁止的,当然前提是有session["userid"]
      

  8.   

    直接cookie嘛,如果考虑安全就加密下
      

  9.   

    利用cookie的身份认证,如果从cookie中读不到相应的数据,则跳转到登陆界面!
      

  10.   

    using System;
    using System.Web;
    namespace BR
    {
        public class MyPageBase : System.Web.UI.Page
        {
                  
            public MyPageBase()
            {
        
            }
            protected override void OnInit(EventArgs e)
            { 
                if((LoginUser)Session["LoginUser"] == null)
                {
                    Response.Redirect(HttpContext.Current.Request.ApplicationPath + "/Login.aspx", true);
                }
                base.OnInit(e);           
            }
        }
    }在每一页都继承这个类。
    public partial class WebForm1 : BR.MyPageBase