asp mvc5 Identity добавляет куки при входе в систему и очищает при выходе - PullRequest
0 голосов
/ 21 марта 2019

Я работаю на ASP.net MVC5, использую по умолчанию Identity
У меня есть 2 дочерние таблицы AspNetUsers, которые students и Teachers оба с foreign key user_id ссылаются AspNetuser
при входе в систему я делаю 2 запроса и помещаю Student.ID и / или Teacher.ID - это Session переменные.
Это работает, но когда я закрываю браузер, сессия очищается, пока AspnetUser все еще входит в систему.
Я думаю, что Asp.Net по умолчанию Identity помещает информацию пользователя в куки при входе в систему
В поисках лучшего решения, сколько должен быть срок жизни куки и т. Д.
мой текущий код

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        } 

        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
        switch (result)
        {
            case SignInStatus.Success:
/***************************my code starts here************/
           var userID = UserManager.FindByEmail(model.Email).Id;

           Teacher teacher = db.Teachers.Where(t => t.user_id == UserID).FirstOrDefault();
           if(teacher != null)
           {
                Session["t_id"]             = teacher.id;
                Session["t_section_id"]     = teacher.section_id;                  
           }

           Student student= db.Students.Where(s => s.user_id == UserID).FirstOrDefault();
           if (student!= null) 
           {
                Session["s_id"]        = student.id;
                Session["s_class_id"]  = student.class_id; 
           }
/***************************my code ends here************/
                return RedirectToLocal(returnUrl);
            case SignInStatus.LockedOut:
                return View("Lockout");
            case SignInStatus.RequiresVerification:
                return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return View(model);
        }
    }

и при выходе я удаляю эти Session переменные

public ActionResult LogOff()
    {


AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);

        Session.Contents.Remove("t_id");
        Session.Contents.Remove("t_section_id");
        Session.Contents.Remove("s_id");
        Session.Contents.Remove("s_class_id"); 
        return RedirectToAction("Index", "Home");
    }
...