MVC не обновляет состояние сеанса в базе данных через сервис API - PullRequest
0 голосов
/ 07 июля 2019

Идея состоит в том, чтобы создать сеанс и сохранить его в виде строки в базе данных при входе в систему, сеанс создается и получает идентификатор каждый раз, когда происходит вход в систему, однако обновление сеанса с пользовательской информацией пока не работает.Возможно, мне не хватает какой-то крошечной детали.Я новичок в 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

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;
    }

Мой вопрос: как мне прочитатьsessionId, который создается в методе входа [HTTPGet] в методе входа [HttpPost], поэтому я могу обновить строку сеанса в базе данных с помощью cookieId и userID?Чего мне не хватает?

1 Ответ

0 голосов
/ 07 июля 2019

Насколько я понимаю, вы можете использовать объект Session, который вы храните SessionID в.

ex:

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

таким образом, вы можете получить любую вещь, которую выхранится в объекте Session где угодно.

...