配置了shiro后直接通过IP访问web项目会被拦截

这个java的web项目的架构是spring+struts2+hibernate

设置了欢迎页index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




跳转主页


	<%
	    //获取项目名称
	    String path = request.getContextPath();
	    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
	    //方便后面在JSP里用EL取值符取地址
	    application.setAttribute("basePath",basePath);
	    response.sendRedirect(path + "/home/homeAction_home.action");
	%>

希望通过这个index.jsp界面通过action跳转到我的访问主页

发现虽然在web.xml配置了欢迎页,但直接通过IP访问的话还是会被shiro拦截

首先可以确定的是被shiro拦截了,那应该是shiro的过滤器配置没有写对

applicationContext-shiro.xml




	
		/index.jsp* = anon
		/home/homeAction_home.action = anon
		/user/userAction_* = anon
				
		/css/** = anon
		/images/** = anon
		/js/** = anon
				
		/** = authc
	

其中我对我的欢迎页面index.jsp设置的访问权限是不需要拦截

后来发现我通过IP访问时并没有进入到index.jsp,而是在直接通过IP访问时被拦截了

配置了shiro后直接通过IP访问web项目会被拦截_第1张图片

因为里面的CSS和IMG都需要index.jsp中所存的basePath路径,所以显示异常

但跳转的页面的确是被拦截的意思


但为什么会被拦截呢?

https://blog.csdn.net/TYOUKAI_/article/details/78480359在这篇博客中讲到shiro的Filter的优先级会高于欢迎页

所以在我们访问欢迎页前shiro的Filter就会把我们的请求拦截

所以我在对shiro的配置文件中增加了 / = anon

即对根目录的访问不进行拦截


	
		/index.jsp* = anon
		/home/homeAction_home.action = anon
		/user/userAction_* = anon
				
		/ = anon    
				
		/css/** = anon
		/images/** = anon
		/js/** = anon
				
		/** = authc
	

问题解决。

你可能感兴趣的:(Java)