Я просто добавил ExecutionHandler
к моему серверному конвейеру непосредственно перед моим основным обработчиком бизнес-логики, как это рекомендовано в документации.Интеграция Apache Shiro и Netty ExecutionHandler/OrderedMemoryAwareThreadPoolExecutor
Я использую Apache Shiro http://shiro.apache.org/ для обеспечения безопасности. Он работал нормально, пока я не добавил ExecutionHandler
.
Вопрос: контекст выполнения
Сиро связан с текущим потоком, в котором вы получите Subject
объект. Таким образом, если Subject
получен в рабочем потоке, но бизнес-логика выполняется в отдельном управляемом потоке ExecutionHandler
, то два контекста выполнения не будут подключены к Сиро. Таким образом, Сиро в потоке ExecutionHandler
не будет знать, что Subject
фактически аутентифицирован. Поэтому я получаю ошибки проверки подлинности.
До передачи его Executor.execute()
можно связать заданный Subject
с Runnable
, чтобы поддерживать контекст безопасности. См: http://shiro.apache.org/subject.html
Исходя из этого, я думаю, что нужно найти способ, чтобы связать текущую Сиро Subject
с ExecutionHandler
Runnable
.
Я все еще пытаюсь в полной мере разобраться в реализации ExecutionHandler
и OrderedMemoryAwareThreadPoolExecutor
.
В основном мне нужно позвонить subject.associateWith(aRunnable)
незадолго до aRunnable
отправлен в Executor.execute(aRunnable)
.
Есть ли у кого-нибудь мысли о том, где/как я мог забрать Сиро в микс?
Спасибо, Matt
Было бы интересно посмотреть, как вы интегрировали shiro и Netty. Если это open source, вы можете поделиться ссылкой? Возможно, вставьте его как github gist. – Abe