2011-09-14 5 views
13

J'ai une application qui utilise Spring Security 3 fonctionne sur Tomcat. Je ne définissait pas favicon pour mon site mais quand je lance ma demande de mon IDE sometimes après je me connecte de mes pages de connexion redirige ma page:favicon.ico pas trouvé d'erreur?

http://localhost:8080/favicon.ico 

et dit:

404 Not Found 

il y a un sujet ici: http://forum.springsource.org/showthread.php?100901-redirect-to-favicon.ico mais je ne définissaient pas favicon.ico fait Spring Security 3, il veut par défaut (si oui, pourquoi il arrive parfois?)

Répondre

19

Voici l'explication:

La question est, lorsque le cache du navigateur est vide et un utilisateur arrive, voici ce qui se passe:

  • l'utilisateur demande l'URL «/». Cette URL est mise en cache.
  • le navigateur fait une demande à "/favicon.ico". Cette URL devient la nouvelle URL vers laquelle rediriger lors de l'authentification.
  • l'utilisateur publie le formulaire de connexion et est redirigé vers "/favicon.ico".

Pour résoudre ce problème, vous devez définir "/favicon.ico" comme étant un non sécurisé ressources:

<intercept-url pattern="/favicon.ico" access="ROLE_ANONYMOUS" /> 

Extrait de: http://blog.idm.fr/2010/09/spring-security-redirecting-to-faviconico.html

+0

Je suis tombé sur ce Q & A en essayant de comprendre cela pour mon application Grails. J'utilise une configuration URLMappings modifiée pour travailler avec mon application AngularJS/Grails, où Grails est principalement un backend REST. Spring Security est utilisé pour ajax auth et j'ai également rencontré ce problème dans Chrome. Pour les utilisateurs de Grails, ajoutez une entrée dans UrlMappings comme: "/favicon.ico"(controller:" home ", action:" ajaxSuccess ") où ajaxSuccess contient une redirection vers l'endroit où vous pourriez envoyer l'utilisateur en cas de succès d'authentification. – th3morg

+0

Il y a une bonne description de ce problème ici: http://www.webweaver.nu/html-tips/favicon.shtml –

0

Pour Grails 3.0. 11 & Spring Security Core 3.0.2, ajouter "IS_AUTHENTICATED_ANONYMUSLY" dans application.groovy dans la section:

grails.plugin.springsecurity.controllerAnnotations.staticRules = [ 
... 
.. 
. 
[pattern: '/favicon.ico',  access: ['IS_AUTHENTICATED_ANONYMOUSLY']] 
]