Несколько месяцев назад я начал проект весенней загрузки и использовал сеанс Spring JDBC с файлами cookie. приложение связано с оплатой. Чтобы получить пользователя в сеансе, я получил файл cookie от HTTPRequestservelet и передал идентификатор в нем сеансу JDBC, чтобы получить пользователя в сеансе. Теперь я прочитал о весенней безопасности и JWT, и кажется, что он делает то же самое, но более защищенным, стандартизированным способом, плюс весенняя безопасность поставляется с Bcrypt, поэтому мой вопрос теперь в том, что я планирую изменить JWT и весеннюю безопасность. , актуальны ли мой сеанс JDBC и файл cookie?




Файл cookie - это всего лишь небольшая часть информации, которая отправляется с сервера и на сервер в запросе и ответе для сохранения информации, связанной с сеансом. Вы всегда можете игнорировать файлы cookie (не только при использовании JWT), если вы можете установить механизм, с помощью которого вы можете хранить и извлекать информацию, связанную с сеансом.
JWT используются для отправки и получения информации об аутентификации и авторизации, а также информации, связанной с сеансом НЕТ, то есть вы не можете изменить JWT, когда, скажем, пользователь добавляет товар в свою корзину.
Таким образом, вы можете использовать файлы cookie (или любой другой механизм) в дополнение к JWT для отслеживания информации о сеансе.
Обновлено: недавно я обнаружил, что отправка JWT в файле cookie - одна из известных передовых практик. Итак, теперь у вас есть лучшее из обоих миров.
В какой момент времени вы начнете сеанс, полностью зависит от того, чего вы пытаетесь достичь. Если вы решите продолжить использование файлов cookie, вы можете просто использовать response.addCookie(new Cookie("key", value)). Тот факт, что вы используете Spring Security и JWT, не означает, что вам нужно изменить способ обработки файлов cookie ранее. Он все еще может оставаться прежним.
вот как я получаю свои файлы cookie из запроса request.getCookies (), поэтому можно ли использовать этот файл cookie и получить пользователя, которого я затем могу использовать в моем методе конфигурации (AuthenticationManagerBuilder, переопределенный классом безопасности Spring).
Насколько я понимаю, вы хотите получить информацию о пользователе (имя пользователя / пароль) из файлов cookie и проверить ее. В этом случае вам необходимо предоставить собственную реализацию UserDetailsService, в которой вы создаете объект User и передаете его в Spring Security. И в вашем методе configure попросите AuthenticationManagerBuilder использовать вашу индивидуальную реализацию UserDetailsService. Надеюсь, это ответит на ваш вопрос.
хорошо, поэтому у меня есть еще один вопрос: построитель аутентификации перекрестно ссылается на имя пользователя и Bcrytpassword на каждом защищенном URL-адресе, это может быть проблемой, потому что если пользователь вводит URL-адрес, который был защищен с помощью Spring Security, он должен быть перенаправляется на страницу loginForm каждый раз, как можно решить эту проблему, чтобы пользователь проходил аутентификацию со своим именем пользователя и паролем только один раз, а Spring Security использует эти данные на протяжении всего жизненного цикла приложения, не перенаправляя его всегда на Loginform?
Я предполагаю, что вы здесь используете JWT. Поэтому каждый раз, когда вы делаете запрос на защищенный URL-адрес, вам необходимо передать JWT в заголовке Authorization и схеме Bearer. Таким образом, система безопасности sprig знает, что пользователь был ранее аутентифицирован.
Позвольте нам продолжить обсуждение в чате.
Итак, как можно использовать сеансы с весенней безопасностью, будет ли аутентификация выполняться до сеанса или наоборот?