2011-09-14 19 views
13

Tôi có một ứng dụng sử dụng Spring Security 3 chạy trên Tomcat. Tôi không xác định bất kỳ favicon cho trang web của tôi tuy nhiên khi tôi chạy ứng dụng của tôi từ IDE của tôi sometimes sau khi tôi đăng nhập từ trang đăng nhập của tôi nó chuyển hướng trang web của tôi để:favicon.ico không tìm thấy lỗi?

http://localhost:8080/favicon.ico 

và nói:

404 Not Found 

Có một chủ đề ở đây: http://forum.springsource.org/showthread.php?100901-redirect-to-favicon.ico tuy nhiên tôi đã không xác định một favicon.ico hiện Spring Security 3 muốn nó theo mặc định (nếu có, tại sao nó xảy ra đôi khi?)

Trả lời

19

Đây là lời giải thích:

Vấn đề là, khi bộ nhớ cache trình duyệt là trống rỗng và một người dùng đến, đây là những gì sẽ xảy ra:

  • người dùng yêu cầu URL "/". URL này được lưu trong bộ nhớ cache.
  • trình duyệt đưa ra yêu cầu "/favicon.ico". URL này trở thành URL mới để chuyển hướng đến khi xác thực.
  • người dùng đăng biểu mẫu đăng nhập và được chuyển hướng đến "/favicon.ico".

Để sửa lỗi này, bạn cần phải thiết lập "/favicon.ico" như là một không có bảo đảm nguồn:

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

Trích từ: http://blog.idm.fr/2010/09/spring-security-redirecting-to-faviconico.html

+0

Tôi tình cờ gặp vấn đề này khi cố gắng tìm ra điều này cho ứng dụng Grails của tôi. Tôi đang sử dụng một cấu hình URLMappings thay đổi để làm việc với ứng dụng AngularJS/Grails của tôi, nơi Grails chủ yếu là một phần phụ trợ REST. Spring Security được sử dụng cho ajax auth và tôi cũng đã gặp phải sự cố này trong Chrome. Đối với người dùng Grails, thêm một mục nhập vào UrlMappings như: "/favicon.ico"(controller:" home ", action:" ajaxSuccess ") trong đó ajaxSuccess chứa một chuyển hướng đến nơi bạn có thể muốn gửi người dùng đến thành công auth. – th3morg

+0

Có một mô tả hay về vấn đề này tại đây: http://www.webweaver.nu/html-tips/favicon.shtml –

0

Đối với Grails 3.0. 11 & Spring Security Core 3.0.2, thêm "IS_AUTHENTICATED_ANONYMOUSLY" vào application.groovy trong phần:

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