我有一个带有两个方框的登录表单和buttonclick上的按钮我使用sql数据库验证用户并将id存储在会话中并设置FormsAuthentication供以后使用。在注销按钮上我将它们重定向到logout.aspx,在那里我销毁会话并重定向到登录页面:
Session.Abandon();
FormsAuthentication.SignOut();
现在退出后如果我使用浏览器返回按钮返回,我仍然可以看到我的previouse页面但是如果我刷新我得到object reference not set to an instance of an object.
protected void Page_Load(object sender, EventArgs e)
Line 33: {
Line 34: string id = Session["ID"].ToString();
如果发生这种情况,将用户送回登录的最佳方法是什么?
答案 0 :(得分:5)
Nota:我建议您使用
if(Session["ID"] != null)
{
}
但我也建议您使用此configuration
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx"
defaultUrl="default.aspx" />
</authentication>
</system.web>
您的退出链接/按钮应指向包含此代码的页面以及您想要的任何其他内容。
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
Session.Abandon();
FormsAuthentication.SignOut();
}
Nota:序列图
答案 1 :(得分:1)
首先应检查Session["ID"] != null
否则,用户未经过身份验证。
但是如果你使用FormsAuthentication,你也可以使用User.Identity.IsAuthenticated