2010-08-17 4 views
1

configuré à Shiro comme suit:apache Shiro: authc.loginUrl ne fonctionne pas

 [main] 



     [users] 

     ... 

     [roles] 

     ... 

     [urls] 

     /welcome.xhtml = anon 
     /overview.xhtml = authc 

Comme vous pouvez l'imaginer 'welcome.xhtml' contient mon login-form. Si je ne suis pas connecté à l'application et j'essaie d'accéder à overview.xhtml je suis jeté à 'login.jsp' qui n'existe pas dans mon application!

De plus, si j'ajoute ce qui suit:

authc.loginUrl = /welcome.xhtml 

à la partie principale de la configuration Shiro je reçois cette erreur en commençant tomcat:

ERROR: Exception starting filter SecurityFilter 
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/PropertyUtils 
    at org.apache.shiro.config.ReflectionBuilder.isTypedProperty(ReflectionBuilder.java:241) 
    at org.apache.shiro.config.ReflectionBuilder.applyProperty(ReflectionBuilder.java:349) 
    at org.apache.shiro.config.ReflectionBuilder.applySingleProperty(ReflectionBuilder.java:200) 
    at org.apache.shiro.config.ReflectionBuilder.applyProperty(ReflectionBuilder.java:161) 
    at org.apache.shiro.config.ReflectionBuilder.buildObjects(ReflectionBuilder.java:121) 
    at org.apache.shiro.config.IniSecurityManagerFactory.buildInstances(IniSecurityManagerFactory.java:171) 
    at org.apache.shiro.config.IniSecurityManagerFactory.createSecurityManager(IniSecurityManagerFactory.java:120) 
    at org.apache.shiro.config.IniSecurityManagerFactory.createSecurityManager(IniSecurityManagerFactory.java:98) 
    at org.apache.shiro.config.IniSecurityManagerFactory.createInstance(IniSecurityManagerFactory.java:84) 
    at org.apache.shiro.config.IniSecurityManagerFactory.createInstance(IniSecurityManagerFactory.java:42) 
    at org.apache.shiro.config.IniFactorySupport.createInstance(IniFactorySupport.java:124) 
    at org.apache.shiro.util.AbstractFactory.getInstance(AbstractFactory.java:48) 
    at org.apache.shiro.web.servlet.IniShiroFilter.applySecurityManager(IniShiroFilter.java:353) 
    at org.apache.shiro.web.servlet.IniShiroFilter.configure(IniShiroFilter.java:321) 
    at org.apache.shiro.web.servlet.IniShiroFilter.init(IniShiroFilter.java:292) 
    at org.apache.shiro.web.servlet.AbstractShiroFilter.onFilterConfigSet(AbstractShiroFilter.java:83) 
    at org.apache.shiro.web.servlet.AbstractFilter.init(AbstractFilter.java:94) 
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295) 
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422) 
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115) 
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.beanutils.PropertyUtils 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
    ... 35 more 

Ehere est mon erreur? acclamations ...


POM Maven PARTIE:

<dependency> 
     <groupId>org.apache.shiro</groupId> 
     <artifactId>shiro-core</artifactId> 
     <version>1.0.0-incubating</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.shiro</groupId> 
     <artifactId>shiro-web</artifactId> 
     <version>1.0.0-incubating</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.shiro</groupId> 
     <artifactId>shiro-aspectj</artifactId> 
     <version>1.0.0-incubating</version> 
    </dependency> 

Répondre

5

Si vous utilisez la configuration .ini de Shiro, il utilise Apache Commons BeanUtils 1.7 (ou version ultérieure). Ce fichier doit être dans le classpath de votre application lors de l'exécution.

Si vous utilisez Maven 2, la dépendance sera automatiquement incluse (sauf si quelqu'un l'a explicitement exclue de votre POM). Si vous ne l'utilisez Maven 2, vous pouvez le télécharger ici:

http://repo2.maven.org/maven2/commons-beanutils/commons-beanutils/1.7.0/

<dependency> 
    <groupId>commons-beanutils</groupId> 
    <artifactId>commons-beanutils</artifactId> 
    <version>1.7</version> 
</dependency> 
+0

J'utilise maven2 .. voir ma mise à jour ci-dessus – Sven

+0

votre liste de dépendances de Maven ne comprend pas 'la Chambre des communes-BeanUtils ', c'est votre problème. Voir ma modification à la réponse de Les Hazelwood pour la dépendance maven. –

Questions connexes