Почему пользователь автоматически входит в систему после повторного открытия вкладки / браузера в приложении MVC, которое использует Microsoft.Identity - PullRequest
0 голосов
/ 28 апреля 2020

Я новичок в мире ASP.Net MVC и у меня есть базовый c вопрос о Session, Identity и процессе входа / выхода пользователя на основе браузера / закрытия вкладки.

Я храню некоторую информацию о пользователе, такую ​​как UserName, UserType и статус регистрации, в сеансе при действии входа в систему контроллера учетных записей. Приложение использует Microsoft.Identity для входа и регистрации. Меню моих приложений заполняется в зависимости от типа пользователя и статуса регистрации.

Проблема заключается в том, что пользователь закрывает браузер и снова открывает его, каким-то образом пользователь все еще входит в систему, но переменные сеанса теряются. Я не понимаю, как пользователь все еще вошел в систему, когда браузер был закрыт? или пользователь получает вход в систему автоматически (каким-то образом), когда в следующий раз он снова открывает браузер? Если это так, я могу взять этот кусок кода и снова установить там переменную сеанса, чтобы приложение работало нормально.

Так пользователь входит в систему и устанавливает переменные сеанса

            SignInStatus signInResult = SignInStatus.Failure;
            try
            {
                signInResult = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, false);
            }
            catch (Exception e)
            {
                // Logs an error into the Kentico event log if the authentication fails
                ExceptionHander.GetExceptionDetails(e, "SignIn");
            }

        // If the authentication was not successful, displays the sign-in form with an "Authentication failed" message
        if (signInResult != SignInStatus.Success)
        {
            ModelState.AddModelError(String.Empty, "Invalid username and/or password.");
            return View();
        }
        else
        {
            var existingUser = UserManager.FindByName(model.Email);
            MySession.Current.UserID = existingUser.Id;
            MySession.Current.Name = $"{existingUser.FirstName}{existingUser.LastName}";
            var company = db.WIN_Company.FirstOrDefault(u => u.CompanyID == existingUser.Id);
            Session["RegisterationStatus"] = company.RegistrationStatus;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...