Hello
I am trying to have ZK framework work with shiro and guice , but I am still
stuck , I am getting No SecurityManager accessible to the calling code,
when trying to put annotation @RequiresAuthentication On any function
One point is still missing for me also , where is the correct point to call
guiceFilterModule()
Below are major classes I am using
@WebListener
public class MyGuiceConfig extends GuiceServletContextListener {
private ServletContext servletContext;
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
servletContext = servletContextEvent.getServletContext();
super.contextInitialized(servletContextEvent);
}
@Override
protected Injector getInjector() {
return Guice.createInjector(new MyShiroWebModule(servletContext),new
ShiroAopModule(),new MyServletModule());
}
}
And MyShiroWebModule
public class MyShiroWebModule extends ShiroWebModule {
public MyShiroWebModule(ServletContext servletContext) {
super(servletContext);
// TODO Auto-generated constructor stub
}
@Override
protected void configureShiroWeb() {
try {
bindRealm().toConstructor(IniRealm.class.getConstructor(Ini.class));
} catch (NoSuchMethodException e) {
addError(e);
}
addFilterChain("/public/**", ANON);
addFilterChain("/stuff/allowed/**", AUTHC_BASIC, config(PERMS,
"yes"));
addFilterChain("/stuff/forbidden/**", AUTHC_BASIC, config(PERMS,
"no"));
addFilterChain("/**", AUTHC_BASIC);
//MyShiroWebModule.guiceFilterModule();
//SecurityUtils.setSecurityManager(securityManager)
}
@Provides
Ini loadShiroIni() {
return Ini.fromResourcePath("classpath:shiro.ini");
}
}
MyServletModule
public class MyServletModule extends ServletModule {
@Override
protected void configureServlets() {
super.configureServlets();
bind(DHtmlLayoutServlet.class).asEagerSingleton();
bind(DHtmlUpdateServlet.class).in(Scopes.SINGLETON);
Map<String,String> layoutServletParameters = new HashMap<String, String>();
layoutServletParameters.put("update-uri", "/zkau");
serve("*.zul",
"*.zhtml").with(DHtmlLayoutServlet.class,layoutServletParameters);
serve("/zkau/*").with(DHtmlUpdateServlet.class);
serve("*.html").with(MyServlet.class);
bind(PojoClass.class).toProvider(PojoProvider.class).in(ServletScopes.SESSIO
N);
bind(IndexViewModel.class);
MyShiroWebModule.guiceFilterModule();
}
}