这个想法是创建会话,并在登录时将其作为行存储在数据库中,每次登录时都会创建该会话并获取ID,但是暂时无法使用用户信息更新会话。我可能会错过一些小细节。我是MVC的新手,之前从未实现过会话,因此我接管了该应用程序,需要对其进行进一步的工作。 登录页面的代码毫无疑问地前进,除了有两个登录ActionResults [Get]和[Post],一个用于创建会话(正在工作),另一个用于使用状态和用户信息更新会话(不起作用! )。控制器代码如下:
[HttpGet]
public ActionResult Login()
{
SessionAid aid = new SessionAid();
var mysession = aid.CreateSession();
if (mysession.SessionID != 0)
{
Session["mySessionId"] = mysession.SessionID;
return View();
}
else
{
return Redirect("~/error");
}
}
[HttpPost]
public ActionResult Login(Login model)
{
string username = model.username;
string password = model.password;
if (ModelState.IsValid)
{
var session= new SessionData();
Session["SessionUserID"] = model.username;
Session["LastActiveTime"] = DateTime.UtcNow;
Session["CookiesId"] = sessionData.CookieID;
if (username == "name" && password == "password")
{
return RedirectToAction("Index", "Home");
}
return View();
}
然后是会话控制器,其中实现了使用userId和cookieId方法的更新Session表
public ActionResult SaveSession(SaveRequest saveRequest)
{
var respon = new SessionResponse();
response.Session = new SessionData
{
SessionID = updatedSession.SessionID,
CookieID = updatedSession.CookieID,
SessionUserID = updatedSession.SessionUserID,
};
response.Success = true;
}
return response;
}
我的问题是如何读取[HttpPost]登录方法中[HTTPGet]登录方法中创建的sessionId,以便可以使用cookieId和userID更新数据库中的会话行?我想念什么?
答案 0 :(得分:-1)
据我了解,您可以使用存储SessionID
的Session对象。
例如:
int SessionId = Session["mySessionId"] as int;
通过这种方式,您可以将任何存储在Session对象中的东西保存在所需的任何位置。