会话变量在发布后丢失(在开发机器上工作)

本文关键字:机器 开发 工作 变量 会话 | 更新日期: 2023-09-27 18:07:42

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

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

所有其他页面共享一个母版页,并且在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加载时,它已经丢失了会话变量。

有人能帮忙吗?今天下午我应该现场直播的。我没想到我会遇到这个问题!!

感谢任何帮助。非常感谢。

会话变量在发布后丢失(在开发机器上工作)

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

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