今天做项目遇到一个问题,也就是spring secuity的问题,场景是这样的,当我打开浏览器第一次登陆的时候登陆到主页的地址是/web/index.do,当时退出来再去登陆此时的地址是/new/open/index.do,此时就比较郁闷了,后来才知道了问题再哪里了,这是在第一次登陆的时候index.jsp中代码是这样的<%response.sendRedirect("/web/index.do");%>而在security.xml文件中配置,此资源是受保护的url的
<http>
<intercept-url pattern="/" filters="none"/>
<intercept-url pattern="/open/**" filters="none" />
<intercept-url pattern="/druid/**" filters="none" />
<intercept-url pattern="/css/**" filters="none" />
<intercept-url pattern="/images/**" filters="none" />
<intercept-url pattern="/js/**" filters="none" />
<intercept-url pattern="/uploads/**" filters="none" />
<intercept-url pattern="/login.do" filters="none"/>
<intercept-url pattern="/password/**" filters="none"/>
<intercept-url pattern="/api" filters="none"/>
<form-login login-page="/login.do" default-target-url="/login!redirect.do"
authentication-failure-url="/login.do?error=true" />
<!--<http-basic/>-->
<remember-me key="e37f4b31-0c45-11dd-bd0b-0800200c9a66" services-ref="rememberMeServices"/>
<logout logout-success-url="/login.do" invalidate-session="true"/>
</http>
所以登陆成功之后跳转到之前受保护的地址,如果没有访问就跳到默认的default-target-url="/login!redirect.do的地址,所以问题知道了,修改index.jsp的转向地址为<%response.sendRedirect("login.do");%>就每次首页的地址会变成是以默认为准。。。
总结:security的<form-login login-page="/login.do" default-target-url="/login!redirect.do"
authentication-failure-url="/login.do?error=true" />并不是总是默认的url登陆成功后,只有登陆成功之前没有访问受保护的资源他才会调到默认的请求