本来打算用asp.net中提供的Form验证来处理用户登录验证的问题。
可是有一个Main.htm有3个frame,如果我直接输入了是这个网页的路径,
要命的是浏览器中就会显示3个用户Form验证的aspx。如果没有的话,不就是要在每个页面都要加上用户是否登录的验证语句了。
我想的是不知道有没有什么方法可以在每一个需要验证的页面上加上一句话调用检查是否已经登录的aspx页面的话,比如让每个页面在显示之前先去调用checklogin.aspx。有这个页面来负责转到login.aspx,而不是在page_load方法中挨个的写语句。

解决方案 »

  1.   

    你可以自己写一个FORM验证呀
      

  2.   

    在Form验证中,如果用户没有登陆,便会跳到一个登录页中去,然后进行登录,登录完毕之后,会跳会到原来的页面上,但是Form验证唯一不爽的要设好各个目录的权限。所以我写了一个类,可以实现Form验证,实际上原理也很容易,只是将转发的URL放在Request的要求中,转发给登录页面,当登陆页面验证完合法登录后,就将URL重定向回原来的URL #region 权限矩阵
        public class AccessMatrix
        {
            private System.Web.UI.Page _page;
            private LoginUser user;
            public AccessMatrix(System.Web.UI.Page page)
            {
                _page = page;
            }
            public void CheckBasicView()
            {
                try
                {
                    user = (LoginUser)_page.Session["LoginUser"];
                    if (!user.BasicView)
                       _page.Response.Redirect("Login.aspx?url="+HttpUtility.HtmlEncode(_page.Request.RawUrl));
                    
                }
                catch
                {
                    _page.Response.Redirect("Login.aspx?return="+HttpUtility.HtmlEncode(_page.Request.RawUrl));
                }
            }
        }
        #endregion 在各个需要验证的页面中的Page_Load事件中写上AccessMatrix matrix=new AccessMatrix() 
    matrix= CheckBasicView();其中user.BasicView是一个bool量,表示查看基本视图的权限。
    在Login.aspx中if (登录成功)
    {
          if (Request[“return“] != null)
          Response.Redirect(Request[“return“] );
    }
      

  3.   

    你的login.aspx
    内 判断一下 如果是在框架内 就跳到最上层
    if(top.location.href !=  location.href){
    top.location.href =  location.href
    }
      

  4.   

    xiahouwen,你的方法我试了,简单好用,谢谢了。javascript还是很有用的。
    rickjelly2004的方法也不错,向你们学习