MVC无法通过api服务将会话状态更新到数据库中

时间:2019-07-07 08:24:17

标签: c# asp.net-mvc session authentication cookies

这个想法是创建会话,并在登录时将其作为行存储在数据库中,每次登录时都会创建该会话并获取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更新数据库中的会话行?我想念什么?

1 个答案:

答案 0 :(得分:-1)

据我了解,您可以使用存储SessionID的Session对象。

例如:

int SessionId = Session["mySessionId"] as int;

通过这种方式,您可以将任何存储在Session对象中的东西保存在所需的任何位置。