हां यह संभव है, लेकिन यदि आप चाहते हैं कि गुइस आपके क्षेत्र बनाने के लिए कुछ गोंद कोड की आवश्यकता है।
- बाइंड क्षेत्र कार्यान्वयन:
bind(Realm.class).to(MyRealm.class).in(Singleton.class);
- बाइंड WebSecurityManager:
@Provides @Singleton WebSecurityManager securityManager(Realm realm) {
DefaultWebSecurityManager sm = new DefaultWebSecurityManager();
sm.setRealm(realm);
return sm;
}
- उपवर्ग Shiro फ़िल्टर में से एक तो आप उपयोग कर सकते हैं Guice WebSecurityManager प्रदान की:
public class SecurityFilter extends IniShiroFilter {
static class SecurityManagerFactory extends WebIniSecurityManagerFactory {
private final WebSecurityManager securityManager;
public SecurityManagerFactory(WebSecurityManager securityManager) {
this.securityManager = securityManager;
}
public SecurityManagerFactory(WebSecurityManager securityManager, Ini ini) {
super(ini);
this.securityManager = securityManager;
}
@Override
protected SecurityManager createDefaultInstance() {
return securityManager;
}
}
private final Provider<WebSecurityManager> securityManager;
@Inject
SecurityFilter(Provider<WebSecurityManager> securityManager) {
super();
this.securityManager = securityManager;
}
protected Map<String, ?> applySecurityManager(Ini ini) {
SecurityManagerFactory factory;
if (ini == null || ini.isEmpty()) {
factory = new SecurityManagerFactory(securityManager.get());
} else {
factory = new SecurityManagerFactory(securityManager.get(), ini);
}
setSecurityManager((WebSecurityManager) factory.getInstance());
return factory.getBeans();
}
}
- अपने फ़िल्टर कॉन्फ़िगर करें:
Joiner lines = Joiner.on("\n");
Map<String, String> config = ImmutableMap.of("config", lines.join(
"; here you can provide additional ini",
"[roles]",
"admin = *",
"[urls]",
"/secure/** = authcBasic"
));
filter("/*").through(SecurityFilter.class, config);
पूर्ण कोड के साथ जवाब के लिए thanx! तो आखिर में कॉन्फ़िगरेशन आईएनआई प्रारूप में होना चाहिए? – newbie
आईएनआई वैकल्पिक है, आप मैन्युअल रूप से प्रदाता विधि में WebSecuirtyManager को कॉन्फ़िगर कर सकते हैं। – sanjary