我正在尝试在我的网站中实现登录/注销功能,而不使用ASP.NET中的Login控件的内置功能。在某些需要用户登录的页面中,我在Page_Load
中写了这个if (Session["cod"] == null && Session["admin"] == null)
{
Response.Redirect("You need to Login.aspx");
}
if (Session["cod"] != null || Session["admin"] != null)
{
LinkButton1.Text = "Logout";
}
if (Page.IsPostBack == false)
{
log_bind();
grid1_bind();
grid2_bind();
}
但在我测试时,我注意到当我按下浏览器上的后退/前进按钮时,这些页面无需登录即可查看。如何防止这种情况?
答案 0 :(得分:1)
这与登录控件无关,但正如其他人所说,页面的缓存。
诀窍是告诉浏览器它无法缓存页面。 看看这篇文章及其解决方案: Disable browser cache for entire ASP.NET website
答案 1 :(得分:0)
我认为即使您不使用ASP.NET登录控件,您仍应使用Principal / Identity类并验证用户是否经过身份验证。这当然是最安全的方式。
答案 2 :(得分:0)
我不知道有任何可靠的方法来做到这一点。一旦页面被查看,它就在用户的计算机上。如果他们点击后退按钮,他们正在查看缓存版本,所以我无法想象为什么这会是一个问题。
只要他们无法刷新页面以获取最新内容,如果他们能够查看他们已经访问的页面,那有什么关系呢?
答案 3 :(得分:0)
您是否尝试过将整个功能包装在
中if(!IsPostBack) {
}
答案 4 :(得分:0)
浏览器可能只是向您显示页面的缓存版本,尝试将调试器附加到页面加载事件并检查是否:
但最好使用asp.net控件或system.web.security.FormsAuthentication类来执行基于自定义逻辑登录和注销等功能。