本来打算用asp.net中提供的Form验证来处理用户登录验证的问题。
可是有一个Main.htm有3个frame,如果我直接输入了是这个网页的路径,
要命的是浏览器中就会显示3个用户Form验证的aspx。如果没有的话,不就是要在每个页面都要加上用户是否登录的验证语句了。
我想的是不知道有没有什么方法可以在每一个需要验证的页面上加上一句话调用检查是否已经登录的aspx页面的话,比如让每个页面在显示之前先去调用checklogin.aspx。有这个页面来负责转到login.aspx,而不是在page_load方法中挨个的写语句。
可是有一个Main.htm有3个frame,如果我直接输入了是这个网页的路径,
要命的是浏览器中就会显示3个用户Form验证的aspx。如果没有的话,不就是要在每个页面都要加上用户是否登录的验证语句了。
我想的是不知道有没有什么方法可以在每一个需要验证的页面上加上一句话调用检查是否已经登录的aspx页面的话,比如让每个页面在显示之前先去调用checklogin.aspx。有这个页面来负责转到login.aspx,而不是在page_load方法中挨个的写语句。
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“] );
}
内 判断一下 如果是在框架内 就跳到最上层
if(top.location.href != location.href){
top.location.href = location.href
}
rickjelly2004的方法也不错,向你们学习