我在工作中遇到了Struts2拦截器设置问题,后来终于解决了。
我们公司做的项目是分前后台的,前台是android手机终端,后台是J2EE,主要是给前台数据服务,我是写后台的。
后来领导为了查看数据,让我做了几个jsp页面,还做了登录功能。在登录模块中我使用了Struts2中的拦截器来控制用户非法操作。
但是手机终端是不需要登录也能访问后台的,加了拦截器后系统就不让访问了,因为拦截器拦截了地址。
解决方法:
<interceptors>
<interceptor name="auth" class="authenticationInterceptor"/>
<interceptor name="check" class="checkInterceptor"/>
<interceptor-stack name="securityStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="auth"/>
<interceptor-ref name="check"/>
</interceptor-stack>
<interceptor-stack name="mobileStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="check"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="securityStack"/>
其中<interceptor name="auth" class="authenticationInterceptor"/>
<interceptor name="check" class="checkInterceptor"/>这两个是我自己写的拦截器,设为默认拦截器,我再定义了mobileStack拦截器,这个不包括auth拦截器,所以方式调用mobileStack拦截器的action就不会检查用户有没有登录。
终端访问的action我就用mobileStack拦截器,否则就用默认拦截器,这样就终端页能访问后台了。