Siema
Mam taką zagwozdkę i kopie w google, ale nic nie moge znaleźć, a nawet ciężko mi przychodza pomysly na to co wpisac :)
O co chodzi? Sprawy sa.. chyba dwie albo trzy
-
Załóżmy ze mam jakies restapi i tam uzytkownikow. Niektore urle z serwisu sa uzaleznione od tego czy user juz przeszedl proces autentykacji (nie chce tego opisywac szczegolowo bo nie ma sensu - ważne jest, ze niektore urle dzialaja jak user bedzie juz mial w bazie zapisany pewien token)
I teraz czy moge zrobic tak, że w momencie zakonczenia autentykacji przez usera, podczas dodawania tego specjalnego tokenu do bazy, dodam temu userowi nową ROLE (dla springa security) o jakiejś nazwie, przypuśćmyROLE_TOKEN
i ustawic w HttpSecurity (JavaConfig), że do tego urla ma dostep tylko user z np ROLE_USER and ROLE_TOKEN. Co myślicie o takim podejściu? -
Druga sprawa poniekąd tycząca się też tego samego problemu, mam klase
@Service
która w każdej swojej metodzie potrzebuje stworzyc i uzywacclient
a jakiegos zewnetrznego api, (cos w stylu FacebookClient, TwitterClient, DropboxClient, YoutubeClient itp - taka klasa 'kliencka')
Uzywam springa do wstrzykiwania serwisu ktorego uzywam wcontrollerze
. I teraz: do stworzenia tego clienta potrzebuje ID uzytkownika, które zawsze przecież jest inne, więc na sztywno nie przypiszę.
Chciałbym uniknąć tworzenia tego clienta w każdej metodzie osobno, jakos to 'zglobalizować'. Chciałem przez konstruktor, ale skoro wstrzykuje ten serwis do kontrolera, to w jaki sposob moglbym w kontrolerze podać jakby parametr (w postaci ID wzietego z urla) do konstruktora tego serwisu, żeby cała klasa serwisu używała swoich metod opierając się na tym ID?
Myslalem też żeby za pomocą AOP przed każdym wywołaniem metody z tego serwisu stworzyc na nowo client według ID - o ile to możliwe -
tak btw: Jak juz jestesmy przy cliencie - jak mam metode, ktora tworzy tego clienta i jego tworzenie sie nie powiedzie to lepiej jest zrobic jakis ClientCreationException i nim rzucić, zwrócić null czy Null Object Pattern (chyba sie nie sprawdzi w tym wypadku)?
jak czegos nie rozumieliscie to mowcie, napisze jak bede mogl dokladniej :P
dzieki
edit
gdyby pytanie 1 okazało sie dobrym podejsciem, to drugie mogloby sie rozwiazac bo moglbym dostep do serwisów miec @Secured("ROLE_TOKEN")
albo same urle które uzywaja tych serwisów zabezpieczone tak jak to opisalem w pytaniu 1 :)