我有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");
}
答案 0 :(得分:2)
这些页面缓存在客户端,因此您无法从服务器端执行任何操作。
客户端的两项可能改进:
第二种情况有一些缺点:页面要么在检查凭据之前可见,要么在检查之后不可见,如果默认情况下隐藏,即使用户具有适当的凭据。并且他可以在执行JS之前获取页面内容(或者根本禁用JS)。 意味着这不太安全。