Post
#1
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Hejka, zalozmy ze mam 20 roznych Entity. Dla kazdej Entity chce stworzyc Voter by zarzadzac co kto moze kasowac/edytowac/itp.
Tak wiec tworze 20 voters, rejestruje je jako service.Wszystko dziala wysmienicie ale jest jedno ale. Symfony tworzy wszystkie 20 obiektow voters dla kazdego request, nie wazne czy ja zamierzam z nich korzystac czy nie. Poczytalem troche, ok, rozumiem czemu. Nie mniej jednak nie podoba mi sie, iz za kazdym razem tworzy mi te 20 obiektow nawet jak nie potrzebuje ani jednego z nich. Oczywiscie moge latwo ograniczyc, by one nic nie sprawdzaly jak nie ma potrzeby wiec nie beda mi obciazac aplikacji zbednymi wyliczeniami ale sam fakt, ze sa one tworzone bez sensu mnie irytuje. No i pytanie: czy powinieniem sie poprostu nie irytowac i olac to i zostawic jak jest czy moze powininiem cos zrobic? Przykladowo mysle nad takim rozwiazaniem, ze tworze i rejestruje tylko jeden uniwersalny voter dla wszystkich Entity i w przypadku gdy bedzie żądanie sprawdzenia praw dla jakiejs Entity to dopiero wtedy bede ladowal wlasciwy voter dla tej entity jako zwykly niezarejestrowany obiekt. Jak wy to robicie u siebie? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
A jakbyś spróbował ogać to na Interface'ach?
W praktyce, interesuje Cię czy dana encja (czy dowolny inny model - tutaj akurat na plus, bo metody możesz współdzielić o ile implementujesz Interface / extedujesz jakiś base-abstract). Przeważnie masz dość prosty warunek, taki jak sprawdzanie czy... no nie wiem... chociażby "createdBy" to obecnie zalogowany user, ograć to Interface'em, dać voter do sprawdzania "IS_CREATOR" i weryfikować support dać na wcześniej wspomniany Interface. Możesz też podbić priorytet przy rejestrowaniu serwisu, w praktyce nie rozwiąże to Twojego problemu, ale tyle o ile (o ile często weryfikujesz ów warunki) przyspieszysz nieco ten proces (nieco - pewnie jakieś atomowe części sekundy (IMG:style_emoticons/default/smile.gif) ). Poza tym, w voterze możesz odpalać inne votery Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface @security.access.decision_manager - tak jakbyś kiedyś szukał (IMG:style_emoticons/default/smile.gif) |
|
|
|
nospor [Symfony][SF3] 5.01.2017, 11:03:43
ohm A nie myślałeś nad użyciem/przetestowaniem takiego... 5.01.2017, 11:15:43
nospor To nie zadziala w przypadku voters, gdyz dla nich ... 5.01.2017, 11:27:48
nospor To samo zaproponowal poprzednik.
Ale zrozumcie, ze... 5.01.2017, 12:05:56
destroyerr CytatJak wy to robicie u siebie?
Mnie to nie irytu... 5.01.2017, 13:12:51
nospor CytatZastanów się czy nie możesz w takim wypadku s... 5.01.2017, 13:23:10 
skowron-line Cytat(nospor @ 5.01.2017, 13:23:10 ) ... 5.01.2017, 15:08:08
destroyerr CytatMoglbym, ale wowczas trace te przejrzystosc: ... 5.01.2017, 15:56:53
nospor Cytatale jak to ma się do zasady DRY?Czemu uwazasz... 5.01.2017, 17:07:59
destroyerr Może jestem w błędzie i nie masz powtórzeń w kodzi... 6.01.2017, 11:45:31
nospor Cytatale votery (zakładam, że mówimy o klasach a n... 6.01.2017, 12:12:33
nospor CytatPrzeważnie masz dość prosty warunek, taki jak... 10.01.2017, 10:09:49
kpt_lucek Cytat(nospor @ 10.01.2017, 10:09:49 )... 10.01.2017, 10:29:23
nospor CytatInaczej nie sprawdzisz (logicznie) warunku, c... 10.01.2017, 10:57:41
pyro Zawsze możesz stworzyć votera, który wywołuje tylk... 10.01.2017, 11:46:44
nospor CytatZawsze możesz stworzyć votera, który wywołuje... 10.01.2017, 12:21:07 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 10:10 |