解决springboot 配置文件未映射静态资源文件 导致shiro拦截静态资源的问题

在springboot当中使用过滤器去做权限的验证是非常蛋疼的事情,而学习使用springsecurity的难度和时间成本相对于shiro来说都要高很多。

Shiro 的配置和使用比较简单,Spring Security 上手复杂些;

Shiro 依赖性低,不需要任何框架和容器,可以独立运行.Spring Security 依赖Spring容器;

shiro 不仅仅可以使用在web中,还支持非web项目它可以工作在任何应用环境中。在集群会话时Shiro最重要的一个好处或许就是它的会话是独立于容器的。

在springboot项目中成功整合shiro之后,会发现一个问题,静态资源好像无法访问了,折腾了快1个小时参考了网上很多资料最终找到了一个解决办法

这是shiro过滤器当中的配置

ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
       bean.setSecurityManager(manager);
        Map<String, String> map = new LinkedHashMap<>();
        //拦截的地址,后面的拦截项目,authc登录拦截,perms权限拦截
        map.put("/js/**", "anon");
        map.put("/user/add","authc");
        map.put("/user/update","authc");
        map.put("/user/add","perms[user:add]");
        map.put("/user/update","perms[user:update]");
        bean.setFilterChainDefinitionMap(map);
        //如果没有登录的跳转到登录页面
        bean.setLoginUrl("/conlogin");
//        如果没有权限跳转到某个页面,这里只是做简单的配置
        bean.setUnauthorizedUrl("/unAuthorized");

  

可能大家按照网上的很多参考资料会发现一个问题

我们的静态资源还是无法拿到,这是怎么回事呢?如果你的springboot不是自己独立创建的话可能会有一个问题,创建的人并没有去映射静态资源的路径

我的测试项目中使用的是:application.properties这个配置文件没有使用yml格式的配置文件,按照网上的资料检查的时候发现没有静态文件的映射关系

抱着试一试的态度试了一下 添加  spring.mvc.static-path-pattern=classpath:/static/ 但是发现还是不起作用

server.port=8022
spring.resources.static-locations=classpath:/static/
spring.thymeleaf.suffix=.html
spring.application.name = springboot-mybatis-plus
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

 但是添加  spring.resources.static-locations=classpath:/static/ 这个之后问题就解决了。

 

 但是还有一点就是项目的页面的js引入的话需要

 <script  src="/js/jquery-2.1.4.js"></script>
这里不需要再加上static的路径了。

  

猜你喜欢

转载自www.cnblogs.com/dypcd/p/12390598.html