2014-05-13 131 views
0

我有3个用户并且为他们提供了登录页面。当用户登录时,用户将被引导至他们所关注的页面。但是,当用户点击浏览器的后退按钮时,他们不应该被允许访问页面,而不必再次提供登录凭证。 LoginPage.cs当点击后退按钮时阻止用户访问页面

protected void bLogin_Click(object sender, EventArgs e) 
{ 

     datatable = methodobj.getData("select regd_no, pword,user_type from stu_info where regd_no='" + tbUName.Text + "'and pword='" + tbPword.Text + "' "); 

     if (datatable.Rows.Count >= 1) 
     { 
      if (string.Compare(Convert.ToString(datatable.Rows[0][0]), tbUName.Text, false) == 0 && 
       string.Compare(Convert.ToString(datatable.Rows[0][1]), tbPword.Text, false) == 0) 
      { 
       Session["loginstatus"] = true; 

       if (datatable.Rows[0]["user_type"].ToString() == "admin") 
       { 
        Session["regd_no"] = Convert.ToString(updtkitable.Rows[0]["regd_no"]); 
        Response.Redirect("~/aHome.aspx"); 
       } 
       if (datatable.Rows[0]["user_type"].ToString() == "students") 
       { 
        Session["regd_no"] = Convert.ToString(updtkitable.Rows[0]["regd_no"]); 
        Response.Redirect("~/RandomPassword.aspx"); 
       } 
       if (datatable.Rows[0]["user_type"].ToString() == "teacher") 
       { 
        Session["regd_no"] = Convert.ToString(updtkitable.Rows[0]["regd_no"]); 
        Response.Redirect("~/subMark.aspx"); 
       } 
      } 

      else 
      { 
       lbStatus.Text = "**Login fail. Incorrect UserId or Password."; 
      } 
     } 
     else 
     { 
      lbStatus.Text = "**Login fail. Incorrect UserId or Password."; 
     } 



} 

AdminMasterPage.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Cache.SetNoStore(); 
    if (Session["loginstatus"] == null) 
    { 
     Response.Redirect("~/login.aspx"); 
    } 
    else if (!Convert.ToBoolean(Session["loginstatus"])) 
    { 
     Response.Redirect("~/login.aspx"); 
    } 
    else if (Session["user_type"] != "admin") 
    { 
     Response.Redirect("~/login.aspx"); 
    } 
+0

如果您想要阻止用户在不登录的情况下访问特定页面,则不应存储会话。对? – user1477388

回答

2

这些页面被缓存在客户端,所以没有什么可以从服务器端做的。从客户端

两种可能的改进:

  1. 告诉客户关闭浏览器退出
  2. 用户的JavaScript后,检查页面加载证书并导航到登录页面,如果他们无效

第二种情况也有一些缺点:该页面或任可见,直到凭据检查不可见,直到如果隐藏在默认情况下,即使用户有凭据都是适宜的检查后。而且他可以在执行JS之前抓取页面内容(或者完全禁用JS)。 这意味着这并不安全。

相关问题