문서에서 권장하는대로 주 비즈니스 논리 처리기 바로 앞에 서버 파이프 라인에 ExecutionHandler
을 추가했습니다.Apache Shiro 통합 및 Netty ExecutionHandler/OrderedMemoryAwareThreadPoolExecutor
보안을 위해 Apache Shiro http://shiro.apache.org/을 사용하고 있습니다. ExecutionHandler
을 추가 할 때까지 제대로 작동했습니다.
문제 :
시로의 실행 컨텍스트가 당신이 Subject
오브젝트를 취득하는 현재 스레드에 바인딩됩니다. 따라서 작업자 스레드에서 Subject
을 얻었지만 비즈니스 논리를 별도의 ExecutionHandler
관리 스레드에서 실행하면 Shiro와 관련하여 두 실행 컨텍스트가 연결되지 않습니다. 따라서 Shiro는 ExecutionHandler
스레드에서 Subject
이 실제로 인증되었음을 인식하지 못합니다. 인증 오류가 발생했습니다.
주어진 을 Runnable
으로 연결 한 후 Executor.execute()
으로 전달하여 보안 컨텍스트가 유지되도록 할 수 있습니다. 참조 : http://shiro.apache.org/subject.html
을 바탕으로 내가 생각하는이가 ExecutionHandler
Runnable
와 현재 시로 Subject
을 연결하는 방법을 찾을 필요에.
ExecutionHandler
및 OrderedMemoryAwareThreadPoolExecutor
구현을 완전히 이해하려고합니다.
기본적으로 aRunnable
이 Executor.execute(aRunnable)
으로 전달되기 전에 subject.associateWith(aRunnable)
으로 전화해야합니다.
누구나 Shiro를 믹스에 연결할 수있는 곳/방법에 대한 생각이 있습니까?
감사합니다, 매트
shiro와 Netty를 어떻게 통합했는지 살펴 보는 것은 흥미로울 것입니다. 그것이 opensource라면 링크를 공유 할 수 있습니까? 어쩌면 그것을 github 요지로 붙일 수 있습니다. – Abe