Comments
Статья хорошая, спасибо.
Есть желание, увидеть ещё настройку CORS со стороны spring.
Спасибо! Принял во внимание, в будущем дополню или опишу в рамках новой статьи.
Также было бы приятно увидеть, продолжение данной статьи, раскрывающие вами поставленные вопросы в блоке «пути решения».
Спасибо за предложение! Учту. Некоторые идеи на этот счёт уже есть, но надо их проработать.

Хорошая статья, я бы только отметил пару моментов:


  1. При наличии dev-tools не нужно перезапускать приложение, достаточно его перекомпилировать и Dev Tools обновят приложение "по горячему".


  2. Насчет токенов и собственной реализации безопасности — я согласен, что для начинающих разработчиков очень важно самому поразбираться и понять, как работают эти механизмы. Только самое главное — не зная причин появления и деталей реализации существующих механизмов, опасно изобретать свои. Например, статья заявляет что:



Basic Authentication не отвечает современному вызову угроз даже в относительно безопасной среде использования

Но реализованный подход с отправкой имени пользователя и пароля и получения токена в ответ по большому счету ничем от basic auth не отличается. JWT токен в ответе это маленькая и незначительная деталь релизации, которая ничего не меняет вообще. Цель OAuth — это как раз избавиться от необходимости предоставлять пароль third party приложениям. Текущая реализация, описанная в статье, это single-tenant (т.к. нет client-id) реализация password grant flow из OAuth2 с самодельным IdToken-ом. Так что конкретно для безопасности в production приложении, я бы все же взял Spring Security + OpenID, вместо самодельной реализации.

Спасибо большое за статью! Как раз на днях собирался свой pet проект начать делать на котлине) С нетерпением жду продолжения :)

Хорошие ссылки. Особенно «То же самое руководство». Совет — когда мало опыта лучше делать перевод, а не краткий пересказ. Нужно иметь уверенные знания в теме, чтобы не упустить важные детали. Но в целом — студентам для лаб это будет очень полезно, что здорово.
Привет! Во-первых спасибо за статью, только не хватает реального корневого pom.xml для быстрого старта) пришлось создавать-править руками.
А ещё вопрос — зачем два раза в 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 :)

Большое спасибо за внимательность и код-ревью!
В файле Greeting.vue все таки лучше весть js код поместить в тэг script, так как иначе при использовании плагина Vue.js для Intellij он просто не будет распознан. Также в этом файле исправьте пожалуйста на
import {AXIOS} from './http-commons'
(s в конце common)

Спасибо за статью, тоже делаю проект на vue.js с jwt. Передачу токена можно один раз прописать в http-common, и там же реализовать переполучение токена и повтор запроса через axios interceptor.

Only those users with full accounts are able to leave comments. Log in, please.