|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
Привет всем, хочу мало кровью обойтись, не настраивая всякие пермишены дополнительные в сервисах. Все сервисы на Spring Boot. добавлены аннотации @EnableFeignClients Обращаюсь к одному из сервисов через интерфейс из другого сервиса @FeignClient(name = "some-service") Хочу, чтобы метод в контроллере сервиса some-service можно было вызывать только сервисами-клиентами, а самому сервису этот метод в контроллере был бы недоступен для прямого вызова по api. Возможно ли такое? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:03 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
Nixic, Не вижу логики. Клиент ПОМОГАЕТ ВЫЗВАТЬ ПУБЛИЧНОЕ REST API не на твоем сайте B. И ты требуешь чтобы на B было закрыто API? Клиент просто уменьшил твой код. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:19 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Nixic, Не вижу логики. бывает :) найду решение, отпишу сюда ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:21 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
Nixic PetroNotC Sharp Nixic, Не вижу логики. бывает :) найду решение, отпишу сюда Я за свободу) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:24 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
опишу все же кратко зачем оно надо. В сервис-A (это отдельный проект, один из микросервисов) с неким контроллером, сервисом и методом в сервисе saveUserA(...), вызывается через POST api/user/save Внутри сервиса есть помимо saveUserA(...) приватный метод, который в нем(saveUserA(...)) вызывается, добавляет некоторые записи в БД. Есть сервис-B, который так же может сохранять юзера и он вызывает свой saveUserB(...) И этот метод не имеет каких-то приватных методов, чтобы добавлять какие-то записи в бд. В итоге, чтобы не писать в обоих сервисах один и тот же код, я вытащил приватный метод в контроллер сервиса-А и через FeignClient из сервиса-B могу вызывать этот метод по определенному api/user/addSomeRecordsToDB При этом мне совершенно не нужно, чтобы этот метод светился в сервисе-А :) В принципе пусть себе светиться, но вызывать его сервис-А сам не должен. Есть вариант через передачу параметров/заголовков, но надеюсь, что уже существует методы Spring Cloud, которые позволят ограничить вызов этого api напрямую сервисом. Да и вообще было бы интересно узнать, что такая возможность есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:40 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
Nixic, Почему я и не люблю микросервисы. Видимость метод-пакет-класс-переменная-public-private вынесены в веб. И там мы строим эти отношения (scope). Если бы поделили сервисы чуть крупнее, то не было бы addUser( два раза в разных сервисах. Имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:51 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Nixic, Почему я и не люблю микросервисы. Видимость метод-пакет-класс-переменная-public-private вынесены в веб. И там мы строим эти отношения (scope). Если бы поделили сервисы чуть крупнее, то не было бы addUser( два раза в разных сервисах. Имхо ситуации разные, юзеры регаются из разных систем, разные системы доступа юзеров к контенту, делили согласно требованиям ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 12:56 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
Nixic ситуации разные, юзеры регаются из разных систем, разные системы доступа юзеров к контенту, делили согласно требованиям А нафига тогда делать распределенный монолит?! Разные системы, разные хранилища для пользователей :-) Если пользователи одни и те же для разных систем, то регистрация и управление пользователями должны быть в общем сервисе. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 13:12 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
Nixic, А нужно было делить по функционалу. Модуль - торговля Модуль - Кадры. Где будут юзвери? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 13:36 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Nixic, А нужно было делить по функционалу. Модуль - торговля Модуль - Кадры. Где будут юзвери? в данном случае слои такие не катят, ролевая модель достаточно сложная. модули и так разделены по функционалу с учетом нагрузки на сервисы и неразделимости некоторых. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 13:50 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
[quot mad_nazgul#22058725] Nixic Если пользователи одни и те же для разных систем, то регистрация и управление пользователями должны быть в общем сервисе. они и так в одном сервисе, есть сторонние юзеры, которые приходят из другой системы через другой сервис. но нужно теперь добавлять тот же функционал в тот сервис, чтобы не копипастить и не создавать те же самые структуры дто и сущности в сервисе, используется фейн клиент ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 13:51 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
[quot Nixic#22058759] mad_nazgul пропущено... они и так в одном сервисе, есть сторонние юзеры, которые приходят из другой системы через другой сервис. но нужно теперь добавлять тот же функционал в тот сервис, чтобы не копипастить и не создавать те же самые структуры дто и сущности в сервисе, используется фейн клиент Если "из другой ИС" значит надо заводить нового юзверя у себя со ссылкой привязкой на того что там. Это значит копировать тот код себе. Он не ваш. А если "из другой ИС" это ваш #сервисмикросервис, то это и есть бардак. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 14:25 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
У ас что то типо этого Override Код: java 1. 2. 3.
И все 3 раскиданы по разным микросервисам. И если просто так вызвать, то все сломается. А при REST не должно ломаться. Хоть 1000 повторов делай. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 14:30 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
Nixic [ они и так в одном сервисе, есть сторонние юзеры, которые приходят из другой системы через другой сервис. но нужно теперь добавлять тот же функционал в тот сервис, чтобы не копипастить и не создавать те же самые структуры дто и сущности в сервисе, используется фейн клиент Для этих двух ИС пользователи где хранятся? В БД или LDAP? Это хранилище общее для двух ИС? Если - да, то у вас "распределенный монолит". Если нет, то каждая ИС хранит своих пользователей в своем хранилище, со всеми нужными полями. А между сервисами делаете интеграцию по "синхронизации" пользователей. Или для двух ИС делаете сервер авторизации, в котором хранятся пользователи и роли. А в ИС уже в соответствии с ролями даются доступы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 08:49 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
mad_nazgul, Пофигу где хранится. У него 3 перегруженных метода добавки юзверя. В разных сервисах. Ему лень DTO, DAO для них 3 раза писать))) Пример что писать долго не показал. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 10:01 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mad_nazgul, Пофигу где хранится. У него 3 перегруженных метода добавки юзверя. В разных сервисах. Ему лень DTO, DAO для них 3 раза писать))) Пример что писать долго не показал. Писать не долго, просто потом это надо будет как-то поддерживать и переписывать везде. В итоге оставил метод открытым, в принципе это пофигу, все юзеры, которые обращаются к системе и так добавляют запись о себе с проверкой на уже существующую запись. Методы не перегружены, они разные в разных сервисах с одной структурой ентити, где-то sso, где-то вход напрямую, где-то анонимный пользователь, обо всех них делается запись и выдаются соответствующие права. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 10:30 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
Nixic, Если у тебя REST то там к каждому ресурсу CRUD то есть есть метод Добавить. И конечно, если поменял Модель придется рефакторить. Кому счас легко). (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 10:36 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
Nixic Писать не долго, просто потом это надо будет как-то поддерживать и переписывать везде. В итоге оставил метод открытым, в принципе это пофигу, все юзеры, которые обращаются к системе и так добавляют запись о себе с проверкой на уже существующую запись. Методы не перегружены, они разные в разных сервисах с одной структурой ентити, где-то sso, где-то вход напрямую, где-то анонимный пользователь, обо всех них делается запись и выдаются соответствующие права. Э-э-э зачем? Проблема же только при создании пользователя? Если да. Так заверните все сообщения по созданию пользователя в какую-нибудь kafka и навешайте на нее нужны обработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 14:15 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
mad_nazgul, Завернуть? Стоит завернуть и мы получаем совсем другой классы системы Message oriented middleware. Ну а REST типо выкинуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 14:54 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mad_nazgul, Завернуть? Стоит завернуть и мы получаем совсем другой классы системы Message oriented middleware. Ну а REST типо выкинуть. Так REST это интерфейс, он я думаю не поменяется. Только в REST-контроллер отправляет не в сервисный слой, а в какой-нибудь event-bus. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 09:23 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
mad_nazgul, Ну мы добавим шину, очереди, ПО для очередей, оркестранта очередей, спеца по очередям. А что это решит? Есть у него 4 сервиса с Код: javascript 1. 2. 3. 4.
И что решат очереди? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 10:13 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
mad_nazgul, Можно добавлять (rmi/soap/rest/message/RPC/qRPC/... А можно _рефакторить_. То означает убирать лишнее. Все как в классах и их взаимодействию. Тут смотреть надо. Автору виднее его проект. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 10:18 |
|
Доступ к методу контроллера только от Feign клиентов
|
|||
---|---|---|---|
#18+
mad_nazgul, Тут вообще, вариантов миллион. На предприятии делают несколько API. Он может всю кухню скрыть в нижнем API техническом. И наверху иметь 3 публичных бизнес API. Одно для носимой электроники (смарты, умные часы,...) другое для руководства и третье для производства. Так он тоже закроет доступ что хотел. Ты выше предлагал права юзверей. Это тоже решение. И все его знают. Есть у него sso и токены. Вариантов много. Удачи аффтару! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 10:30 |
|
|
start [/forum/topic.php?fid=59&msg=39914361&tid=2120947]: |
0ms |
get settings: |
16ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
92ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
394ms |
get tp. blocked users: |
0ms |
others: | 6ms |
total: | 520ms |
0 / 0 |