Я пишу службу, в которой я использую Shiro для обеспечения безопасности. Я также включил в него Guice. Я создаю Guice инжектор в GuiceServletContextListener
:Shiro AOP с GUICE не работает
//Custom Shiro Web module with defined REALM
new MyShiroWebModule(this.servletContext, "/v1/*"),
//Shiro annotations
new MyAOPModule(),
Я также связать Guice контейнер и GuiceShiroFilter в JerseyServletModule
:
serve("/v1/*").with(GuiceContainer.class, params);
//Adds Shiro filtering
MyShiroWebModule.bindGuiceFilter(binder());
Но Аннотации от Shiro просто не похоже на работу!
настроить цепочки в MyShiroWebModule
:
addFilterChain("/v1/res/test", ANON);
addFilterChain("/v1/**", ROLES, AUTHC_BASIC);
Так что, если я использую "РОЛИ" фильтр, то он сканирует для ролей в АОП манере:
@RolesAllowed("SomeFancyRole")
(СМ EDIT)
Но я хотел бы использовать функциональность GUICE Shiro AOP. Я попробовал базовый ShiroAOPModule вместо моего собственного -> my для отладки, чтобы узнать, вызвана ли конфигурация.
@User, @Authenticated etc.
Как я могу включить эту функцию в качестве документации говорится, что только «добавление» ShiroAOPModule должен работать из коробки? Спасибо заранее
EDIT:
Оказывается, что @RolesAllowed
работает благодаря добавлению:
params.put(PackagesResourceConfig.PROPERTY_RESOURCE_FILTER_FACTORIES, "com.sun.jersey.api.container.filter.RolesAllowedResourceFilterFactory");
в JerseyServletModule
serve("/v1/*").with(GuiceContainer.class, params);
Так АОР от Сиро до сих пор не фильтруется.
Вы можете проверить образец проекта здесь [https: // GitHub. ком/pabiagioli/сиро-Guice-Джерси-самозагрузка] (https://github.com/pabiagioli/shiro-guice-jersey-bootstrap) – pampanet