shiro配置好后,页面登录成功会自动重定向/favicon.ico

来源:互联网 发布:js基础知识体系 编辑:程序博客网 时间:2024/05/02 00:09

问题描述:


今天给浏览器页面加上logo文件 /favicon.ico,类似上图。

文件放在 static/common/images 路径下,页面 head 里加上

<link rel="shortcut icon" href="static/common/images/favicon.ico" type="image/x-icon">

浏览器可以成功显示 favicon.ico,但是在第一次登陆成功后会自动重定向到 /favicon.ico 文件的路径。


网上的解决办法:
基本大多数浏览器都会请求 favicon.ico 这个图标文件用来展示在浏览器的URL地址前面,而这个文件被shiro保护了。

解决方法:

在 filterChainDefinitions 下配置 /favicon.ico 以匿名访问

 /favicon.ico = anon
可是我配置好 /static/common/images/favicon.ico = anon 后,还是会重定向。

多次测试之后发现anon配置的顺序会有影响。

Shiro验证URL时,URL匹配成功便不再继续匹配查找,所以要注意配置文件中的URL顺序,尤其在使用通配符时。
故filterChainDefinitions的配置顺序为自上而下,以最上面的为准。

之前的配置:
<property name="filterChainDefinitions"><value>/resources/**=anon/systemManage/resources/**=anon/unauthorized = authc/login = authc/logout = logout<!--/authenticated = authc-->/** = user,sysUser/static/common/images/favicon.ico = anon</value></property>



修改后的配置:
<property name="filterChainDefinitions"><value>/static/common/images/favicon.ico = anon/resources/**=anon/systemManage/resources/**=anon/unauthorized = authc/login = authc/logout = logout<!--/authenticated = authc-->/** = user,sysUser</value></property>

只是调整了  /static/common/images/favicon.ico = anon 的顺序。

过滤器 anon  表示可匿名使用,可以理解为匿名用户或游客,无需认证便可以访问的的文件。


还是不太理解顺序跟重定向的关系,但是我确实依靠调整顺序解决了这个问题。有知情的大神,还请不吝指教!


1 0
原创粉丝点击