Właśnie dodałem do mojego serwera potok ExecutionHandler
tuż przed moim głównym programem do obsługi logiki biznesowej, zgodnie z zaleceniami w dokumentacji.Integracja Apache Shiro i Netty ExecutionHandler/OrderedMemoryAwareThreadPoolExecutor
Używam Apache Shiro http://shiro.apache.org/ dla bezpieczeństwa. Wszystko działało dobrze, dopóki nie dodałem ExecutionHandler
.
Kwestia: kontekst wykonanie
Shiro jest zobowiązany do bieżącego wątku, w którym można uzyskać obiekt Subject
. Tak więc, jeśli Subject
jest uzyskiwany w wątku roboczym, ale logika biznesowa jest wykonywana w osobnym wątku zarządzanym ExecutionHandler
, wówczas dwa konteksty wykonania nie zostaną połączone, jeśli chodzi o Shiro. W związku z tym Shiro w wątku ExecutionHandler
nie zdaje sobie sprawy, że Subject
jest rzeczywiście uwierzytelniony. Dostaję więc błędy uwierzytelnienia.
Możliwe jest skojarzenie danego Subject
z Runnable
przed przekazaniem go do Executor.execute()
, aby zachować kontekst zabezpieczeń. Zobacz: http://shiro.apache.org/subject.html
Na tej podstawie myślę, trzeba znaleźć sposób, aby skojarzyć aktualny Shiro Subject
z ExecutionHandler
Runnable
.
Nadal staram się w pełni zrozumieć implementacje ExecutionHandler
i OrderedMemoryAwareThreadPoolExecutor
.
Zasadniczo muszę zadzwonić pod numer subject.associateWith(aRunnable)
tuż przed aRunnable
został przekazany do Executor.execute(aRunnable)
.
Czy ktoś ma przemyślenia na temat tego, gdzie/w jaki sposób mogę podłączyć Shiro do miksu?
Dzięki Matt
Byłoby interesujące zobaczyć, jak zintegrowałeś shiro i Netty. Jeśli jest to opensource, czy mógłbyś udostępnić link? Może wkleić go jako istotę github. – Abe