导语
springboot+shiro整合的项目中,没啥问题的,当倒入前端页面时,运行项目打开页面会发现,页面会调用shiro的登录接口,但页面还是正常访问,并且静态资源也都已正确引入。
问题介绍
shiro中发现静态资源的部分代码:
1
2
3
4
5
6
map.put("/static/*","anon");
map.put("/*.html","anon");
map.put("/js/*","anon");
map.put("/css/*","anon");
map.put("/img/*","anon");
map.put("/fonts/*","anon");
当我打开页面时,显示正常,但后台打印出调用了shiro的登录方法
解决办法
其实是因为springboot中带有图标的请求(favicon.ico)即打开页面会发送/favicon.ico的请求,而shiro中并没有配置,所以才会调用登录方法,加上即可
1
2
3
4
5
6
7
map.put("/static/*","anon");
map.put("/*.html","anon");
map.put("/js/*","anon");
map.put("/css/*","anon");
map.put("/img/*","anon");
map.put("/fonts/*","anon");
map.put("/favicon.ico","anon");
不过以此代码,可能使用IE打开还是会调用,因为本人使用的是bootstrap框架,以此可能会请求css/static/…的资源,而/css/* 仅仅是放行css下一级目录,而并非所有子目录,所以应改为/css/**
1
2
3
4
5
6
7
map.put("/static/**","anon");
map.put("/*.html","anon");
map.put("/js/**","anon");
map.put("/css/**","anon");
map.put("/img/**","anon");
map.put("/fonts/**","anon");
map.put("/favicon.ico","anon");