发布后会话变量丢失(适用于开发机器)

时间:2013-04-05 13:36:52

标签: c# session authentication session-variables

我被要求拼凑的快速项目不需要疯狂的安全性,所以,我已经实现了一个简单的登录屏幕,用于检查用户名和用户名。 PW对阵db。

User u = new User();
if (u.AuthenticateUser(txtUsername.Text, txtPassword.Text))
   Session.Add("UserSeshAuthenticated", true);                    

Response.Redirect("Dashboard.aspx");

所有其他页面共享一个MasterPage并在Page_Load事件中:

if ((Session["UserSeshAuthenticated"] == null) || ((bool)Session["UserSeshAuthenticated"] == false))
        {
            fw.Write("UserSeshAuthenticated has been lost or something");

            string path = HttpContext.Current.Request.Url.AbsolutePath;
            Response.Redirect("Login.aspx?retpath=" + path);
        }
        else
        {
            lblLoggedInUsername.Text = Session["UserSeshAuthenticated"].ToString();
        }

这在我的开发机器上运行得非常好,但是当我将它发布到我的服务器时,当我的MasterPage加载时,它已经丢失了会话变量。

任何人都可以帮忙吗?......今天下午我应该让它活下来。我不认为我会遇到这个问题!!!

任何帮助表示赞赏。非常感谢。

1 个答案:

答案 0 :(得分:0)

在您的登录代码中,您将“UserSeshAuthenticated”添加到会话,但不会添加User对象。如果函数u.AuthenticateUser()将自己的副本添加到Session中,那可能是您的问题。尝试在结果块中添加它。像这样:

User u = new User();
if (u.AuthenticateUser(txtUsername.Text, txtPassword.Text))
{
   Session.Add("UserSeshAuthenticated", true);
   Session.Add("oUser", u);

   Response.Redirect("Dashboard.aspx");
}