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