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.

Reply via email to