我使用Spring,Hibernate,tiles,Spring security创建了一个应用程序。
有些页面可以在不登录的情况下访问。并且有些页面只能在登录后访问(即具有角色' ROLE_USER'的用户)。 "帐户设置"登录后可以访问的页面。当我在没有登录的情况下点击帐户设置URL时。我直接登录屏幕。记录后,它会将我重定向到帐户设置页面。这是预期的行为。但我面临的问题是,当我尝试点击链接'帐户设置'第二次。它在网址前添加一个额外的/用户,我收到404错误。如何防止spring一次又一次地为用户添加前缀。即便我尝试重定向'但它没有帮助。非常感谢您的帮助。
网址
http://localhost:8080/myapp/ 用户 / accountSettings(第一次) http://localhost:8080/myapp/ 用户/用户 / accountSettings(第二次)
弹簧security.xml文件
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/user/**" access="hasRole('ROLE_USER')" />
.....
链接
<a href="user/accountSettings">Account Setting</a>
控制器类
@RequestMapping("/user/accountSettings")
public ModelAndView accountSettings() {
ModelAndView model = new ModelAndView("accountSettings");
return model;
}
tiles.xml
<definition name="accountSettings" extends="base.definition">
<put-attribute name="title" value="Account Settings" />
<put-attribute name="body" value="/WEB-INF/jsp/accountSettings.jsp" />
</definition>
答案 0 :(得分:0)
问题出在HTML链接中。你可以尝试
<a href="accountSettings">Account Setting</a>
或
<a href="/myapp/user/accountSettings">Account Setting</a>
答案 1 :(得分:0)
不要对上下文路径进行硬编码,而是使用此
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<a href="<c:url value='/user/accountSettings'/>">Account Settings</a>
我建议在网址中使用连字符,例如account-settings