正常情况是不会出现这样的,shiro对于静态资源的处理,不用特殊配置。
只需要在shiroFilter过滤器filterChainDefinitions项中增加一个静态资源处理规则就可以,例如允许/css/开头的资源匿名访问,只需要这样一句配置就足矣。
/css/** = anon
配置完成后,未登录就可以在浏览器中直接访问css下的资源,新项目用的shiro,简单而又实用的权限框架。
在shiroFilter 和 mvc:resources中都需要配置,
如:
shiroFilter中:
<property name="filterChainDefinitions">
<value>
/css/** = anon
/js/** = anon
/img/** = anon
</value>
</property>在spring-mvc.xml中:
<mvc:resources mapping="/css/**" location="/css/" cache-period="2592000"/>
<mvc:resources mapping="/img/**" location="/img/" cache-period="2592000"/>
<mvc:resources mapping="/js/**" location="/js/" cache-period="2592000"/>
1 、 首先 创建一个项目名(mail)的文件夹, 在项目文件夹下创建一个存放JS脚本的文件夹,创建一个存放images(图片)的文件夹,创建一个存放CSS样式的文件夹等。
2、 然后在项目文件夹下创建一个WEB-INF的目录文件,JAVA类、jar包、WEB应用的配置文件都存在这个目录下。WEB-INF目录下存放了一些文件,有classes目录(编译好的类库)、lib目录, 每一个WEB应用程序的访问都需要一个配置文件,基于WEB.xml文件,所以在WEB-INF 文件目录下应该创建一个WEB.xml文件。
3、在所创建的项目mail文件夹下创建一个HTML文件,名为index.html。在HTML文件中编辑一些内容。
4、 在tomcat目录文件夹下的conf文件的Catalina\Localhost文件夹下新建一个名为mail.xml的项目文件,在这个文件中编辑代码,写一个Context的配置的路径 如:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase=”C:\mail”/>
5、 最后重新启动Comcat就可以了。
我在整合springboot 的 无状态shiro 的时候发现了这个问题,同样的配置在spring mvc下用xml方式配置是正常的,就是ShiroFilterFactoryBean注入自定义拦截器后,只要使用了/** = ANYONE会拦截前面所有的拦截器,不管是否通过。
比如这样配置
/test = none
/** = authc
使用shiro内置拦截器照样拦截前面所有的,因为我是无状态,在访问的时候会报错的。
,但是不注入自定义拦截器就是正常的。注入自定义拦截器,感觉整个拦截器链都混乱了,弄了一下午没有弄好这个问题。