только что завершил реализацию, которая работала нормально для меня:
На сервере я оцениваю Сеанс, Имя пользователя и пароль, поэтому я отслеживаю эту информацию, алгоритм входа в систему выглядит следующим образом:
1.Проверьте, если имя пользователя и пароль не пустые, иначе верните 401.
2. Проверьте, зарегистрировали ли мы сеанс в нашем списке вошедших в систему пользователей, если нет, то проверьте правильность имени пользователя и пароля и, если это так, сохраните идентификатор сеанса в нашем списке, а затем верните 401.
Я объясню этот шаг: если идентификатор сеанса отличается, произошло одно из трех:
а) Пользователь открывает другое окно.
б) Сеанс пользователя завершен, т.е. пользователь вышел из системы.
в) сеанс истек из-за неактивности.
Но мы хотим сохранить сеанс, пока учетные данные пользователя действительны, но возвращаем 401, чтобы один раз запросить пароль, если мы не сохраним сеанс, то пользователь никогда не сможет войти, потому что у нас нет нового идентификатора сеанса в нашем списке.
3. Проверьте правильность учетных данных пользователя, если это так, сохраните информацию о сеансе и продолжите показ страниц, иначе верните 401.
Итак, единственное, что мне нужно, чтобы выйти из системы, - это закрыть сеанс на сервере, когда пользователь запрашивает страницу выхода из системы, и веб-браузер снова показывает диалоговое окно входа в систему.
Когда я пишу это, я думаю, что должен быть шаг, на котором программа проверяет, вошел ли пользователь в систему, чтобы избежать олицетворения, может быть, я могу сохранить более одного идентификатора сеанса на пользователя, чтобы разрешить несколько сеансов, ну, Я хотел бы ваши комментарии об этом.
Надеюсь, вы поняли идею, и прокомментируйте, если увидите какой-либо недостаток безопасности;)