如何防止Spring一次又一次地添加基本URL(Spring Security)

时间:2015-09-07 18:57:56

标签: spring hibernate filter spring-security tiles

我使用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>

2 个答案:

答案 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