之前一直没发现这个问题是因为在项目中存在favicon.ico文件,这个请求被nginx处理了而未转发给tomcat。
这次因为偷懒还没来得及配置nginx,结果就出现了上面的问题。
出现上述问题的原因是:基本大多数浏览器都会请求favicon.ico这个图标文件用来展示在浏览器的URL地址前面,而这个文件被spring security保护了,所以…有下面的流程:
the user requests URL "/". This URL is cached.
the browser makes a requests to "/favicon.ico". This URL becomes the new URL where to redirect to upon authentication.
the user posts the login form and is redirected to "/favicon.ico"
而解决办法是将favicon.ico加入允许匿名访问.
代码如下 | 复制代码 |
<sec:intercept-url pattern="/favicon.ico" access="IS_AUTHENTICATED_ANONYMOUSLY" /> |
其实这并不是一个好方案,为何要将favicon.ico请求的处理交给你的Servlet容器呢?仅仅一个图标而已,我们应该用nginx或apache直接处理:
代码如下 | 复制代码 |
location /favicon.ico { #root '/data/web/static/'; return 404; } |
时间: 2024-09-19 10:33:01