我正在使用Forms身份验证。用户退出后我遇到一个小问题。如果他在退出后按下后退按钮,他就会被发送到他登录时所在的页面。
防止这种情况的最佳方法是什么?我环顾四周,但似乎没有一种确定的方法。理想情况下,我想我想在母版页上有一个功能,甚至在httpsodule中检查用户是否已登录,如果没有,则将其重定向到登录名。这是最好的方法吗?
感谢。
答案 0 :(得分:1)
只要您在Session.Abandon()
页面上执行FormsAuthentication.SignOut()
和Logout
,用户是否可以返回到他所在的上一页并不重要任何内容都将被重定向到Login
页面。
示例:
Page_Load登录/退出页面:
if (!IsPostBack)
{
FormsAuthentication.SignOut();
Session.Abandon();
}
答案 1 :(得分:0)
您可以通过在page_load
事件中添加以下语句来关闭受限制网页的cache能力。
Response.Cache.SetCacheability(HttpCacheability.NoCache)
答案 2 :(得分:0)
由于浏览器中的“后退”按钮不能被ASP.NET控制(至少不能禁用它),我建议您按照建议进行操作:
在每个页面上,检查用户是否已登录,如果没有,则将其重定向到登录页面,可选择使用goto
参数将其重定向回成功后成功导航到的页面正在登录。
我这样做也适用于大多数应用程序。
答案 3 :(得分:0)
HttpContext.User具有IsAuthenticated属性,您可以在每个页面中签入。如果你真的想使用自定义会话变量,请确保在注销时将其删除或执行Session.Abandon,并在所有页面中检查它。