C# ASP.NET阻止在注销前后访问主页
我有一个登录页面和一个主页。不登录就无法访问主页,但在我登录并单击主页上的“注销”之后。用户可以从浏览器的地址行访问主页。如何预防这种情况?这是我的实现 AdminPanelLogin.aspx.cs上的登录单击方法:C# ASP.NET阻止在注销前后访问主页,c#,asp.net,session,login,session-cookies,C#,Asp.net,Session,Login,Session Cookies,我有一个登录页面和一个主页。不登录就无法访问主页,但在我登录并单击主页上的“注销”之后。用户可以从浏览器的地址行访问主页。如何预防这种情况?这是我的实现 AdminPanelLogin.aspx.cs上的登录单击方法: protected void adminLoginButton_Click(object sender, EventArgs e) { String adminName = adminNameText.Text; String passwo
protected void adminLoginButton_Click(object sender, EventArgs e)
{
String adminName = adminNameText.Text;
String password = adminPwdText.Text;
AdminPanelLoginProcess aplp = new AdminPanelLoginProcess();
if (aplp.adminLogin(adminName, password))
{
Session["AdminAuthentication"] = aplp.Admn.AdminID;
Response.Redirect("AdminPanel.aspx");
}
else
{
Response.Write("<script>alert('Login failed !');</script>");
}
}
AdminPanel.aspx.cs页面加载方法:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["AdminAuthentication"] == null)
{
Response.Redirect("AdminPanelLogin.aspx");
}
else
{
if (!IsPostBack)
{
showProducts();
showModels();
showShoes();
}
else
{
if (Session["AdminAuthentication"] == null)
{
Response.Redirect("AdminPanelLogin.aspx");
}
}
}
}
默认情况下,“上一步”按钮不会重新加载页面,而是从缓存中获取页面。尝试将AdminPanel.aspx中的缓存禁用为
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now);
或者使用中的任何其他方法,是否需要阻止“用户可以从浏览器的地址行访问主页”?本例中的主页是什么?是AdminPanel.aspx吗?您使用的是什么身份验证模式?代码看起来不错,应该可以正常工作。您是否可以确认:您的用户无需输入登录名和密码即可访问AdminPanel.aspx?这些用户是授权用户(拥有登录名和密码,但他们没有输入任何内容)还是未授权用户?我没有在web配置中声明任何模式。但它是一个web表单应用程序。@smirnov没有登录,就没有访问权限。用户登录并注销后,我可以通过地址ar或浏览器的后退按钮访问adminpanel.aspx。我已经检查了该链接,但我不为自己工作。我应该把你的代码放在哪里呢?你应该把它添加到AdminPanel.aspx的Page_Load()方法的开头。这些行将发送到浏览器“缓存控制:无缓存,无存储”和“Pragma:无缓存”并阻止缓存。因此,当用户通过地址栏或使用“后退”按钮再次访问页面时,浏览器将不会有现金版本。1)删除所有浏览器缓存和cookie(工具设置隐私),然后重试。2) 如果这不起作用,并且您在注销后仍然获得AdminPanel.aspx,请按Ctrl+F5刷新页面,以查看您是否将重定向到AdminPanelLogin。仍然相同,没有任何更改如果会话真的为空,请检查AdminPanelLogin.aspx,例如如果(会话[“AdminAuthentication”]=空)响应。写入(“空”);else-Response.Write(“session=“+session[“AdminAuthentication”]);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now);