单击后退按钮时阻止用户访问页面

时间:2014-05-13 13:32:14

标签: c# asp.net session

我有3个用户,并为他们提供了登录页面。当用户登录时,用户被引导到他们所尊重的页面。但是当用户单击浏览器的BACK BUTTON时,不应该允许他们访问页面而不再提供登录凭据。 的 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");
    }

1 个答案:

答案 0 :(得分:2)

这些页面缓存在客户端,因此您无法从服务器端执行任何操作。

客户端的两项可能改进:

  1. 告诉客户端在注销后关闭浏览器
  2. 用户JavaScript检查页面加载时的凭据并导航到登录页面(如果它们无效)
  3. 第二种情况有一些缺点:页面要么在检查凭据之前可见,要么在检查之后不可见,如果默认情况下隐藏,即使用户具有适当的凭据。并且他可以在执行JS之前获取页面内容(或者根本禁用JS)。 意味着这不太安全。