I've created an extended EnvironmentLoaderListener.
But I see now when I try to login that my securityManger has no realms
available.
Do you know if my securityManager could be overwritten somewhere?
public class CdiEnvironmentLoaderListener extends EnvironmentLoaderListener
{
@Inject
JpaRealm jpaRealm;
@Override
protected WebEnvironment createEnvironment(ServletContext sc) {
WebEnvironment environment = super.createEnvironment(sc);
RealmSecurityManager rsm = (RealmSecurityManager)
environment.getSecurityManager();
HashedCredentialsMatcher matcher = new HashedCredentialsMatcher();
matcher.setHashAlgorithmName(Sha256Hash.ALGORITHM_NAME);
jpaRealm.setCredentialsMatcher(matcher);
rsm.setRealm(jpaRealm);
((DefaultWebEnvironment) environment).setSecurityManager(rsm);
return environment;
}
}
atomicknight wrote
>
> You can't use the built-in EnvironmentLoaderListener because it doesn't
> use
> injection to build the Environment. However, you should be able to extend
> it and override #createEnvironment(ServletContext) to use an injected
> CdiWebEnvironment instance:
>
> public class CdiEnvironmentLoaderListener extends
> EnvironmentLoaderListener
> {
> @Inject
> private CdiWebEnvironment environment;
>
> protected WebEnvironment createEnvironment(ServletContext sc) {
> // Do your initialization here
> return environment;
> }
> }
>
> I haven't actually tried this because I ended up writing my own
> version of EnvironmentLoaderListener,
> but this should work.
>
--
View this message in context:
http://shiro-user.582556.n2.nabble.com/Shiro-in-CDI-JPA2-JSF2-project-tp7577437p7577461.html
Sent from the Shiro User mailing list archive at Nabble.com.