Comments 21
Есть желание, увидеть ещё настройку CORS со стороны spring.
Хорошая статья, я бы только отметил пару моментов:
При наличии dev-tools не нужно перезапускать приложение, достаточно его перекомпилировать и Dev Tools обновят приложение "по горячему".
Насчет токенов и собственной реализации безопасности — я согласен, что для начинающих разработчиков очень важно самому поразбираться и понять, как работают эти механизмы. Только самое главное — не зная причин появления и деталей реализации существующих механизмов, опасно изобретать свои. Например, статья заявляет что:
Basic Authentication не отвечает современному вызову угроз даже в относительно безопасной среде использования
Но реализованный подход с отправкой имени пользователя и пароля и получения токена в ответ по большому счету ничем от basic auth не отличается. JWT токен в ответе это маленькая и незначительная деталь релизации, которая ничего не меняет вообще. Цель OAuth — это как раз избавиться от необходимости предоставлять пароль third party приложениям. Текущая реализация, описанная в статье, это single-tenant (т.к. нет client-id) реализация password grant flow из OAuth2 с самодельным IdToken-ом. Так что конкретно для безопасности в production приложении, я бы все же взял Spring Security + OpenID, вместо самодельной реализации.
Спасибо большое за статью! Как раз на днях собирался свой pet проект начать делать на котлине) С нетерпением жду продолжения :)
А ещё вопрос — зачем два раза в pom.xml вызывается исходник BackendApplicationKt ??
К тому же хотел бы отметить что содержимое английской и этой версии отличаются качественно (в пользу английской). И да, я знаю что автор — вы :)
1. зачем у вас в корневом pom.xml упоминание котлина и kotlin-maven-pluginб если эти артефакты должны быть в бекенде?
2. не кажется ли странной зависимость бекенда от фронтенда? я имею ввиду явное указание папки frontend в плагине maven-resources-plugin бекенд модуля.
3. у корневого pom.xml указана версия 1.0-snapshot, а в то время как frontend имеет ссылку на parent pom версии 0.0.1
4. что-то падает команда
mvn --project backend spring-boot:runна вызове ключа --project. Это что вообще за ключ? :)
Спасибо за замечание, start-class из properties вполне можно убрать. А вот mainClass лучше оставить, потому что можно словить ошибку «Could not find or load main class».
Прошу прощения за это — хотел изменить размер, но, видимо, пострадало и качество. На будущее учту :)
1. Такой же атавизм, как start-class, убрал.
2. Согласен, надо будет подумать, как лучше убрать эту зависимость.
3. Грубый косяк, тоже виновата моя невнимательность. Поправил. Причем, как ни странно, в репозитории всё правильно. Видимо, ошибка пробралась где-то на стадии копипаста в документ.
4. Да, конечно же --projects :)
Большое спасибо за внимательность и код-ревью!
import {AXIOS} from './http-commons'
(s в конце common)Спасибо за статью, тоже делаю проект на vue.js с jwt. Передачу токена можно один раз прописать в http-common, и там же реализовать переполучение токена и повтор запроса через axios interceptor.
круто, а можно тоже самое, но на реакте?
спасибо работает
Веб-приложение на Kotlin + Spring Boot + Vue.js