在URL的末尾添加/呈现相同的页面?

时间:2015-09-11 12:35:31

标签: spring-mvc url

考虑一下代码段:

@Controller
@RequestMapping(value = "/spitter")
public class SpittrController {

    @RequestMapping(value = "/register", method = RequestMethod.GET)
    public String showRegistrationForm() {

        return "registerForm";
    }
}

其中 registerForm.jsp 就像这样简单:

<form method="post">
        <table>
            <tr>
                <td>First Name:</td>
                <td><input type="text" name="firstName" /></td>
            </tr>
            <tr>
                <td>Last Name:</td>
                <td><input type="text" name="lastName" /></td>
            </tr>
            <tr>
                <td>User Name:</td>
                <td><input type="text" name="userName" /></td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type="password" name="password" /></td>
            </tr>
            <tr>

                <td><input type="submit" value="Register" /></td>
            </tr>
        </table>
</form>

我在网络浏览器中输入以下 网址

  

http://localhost:8080/web/spitter/ 注册

我在下面的页面中看到,根据功能,这很好:

enter image description here

现在,如果我稍微修改了 网址 ,并做了类似的事情

  

http://localhost:8080/web/spitter/ 寄存器/

然后还会呈现 同一页

enter image description here

为什么呢?即使输入的 地址(网址) 未指向映射到控制器中的 请求

有什么建议吗?

编辑:

当我必须使用Spring Security时,整个问题就出现了。

考虑一下代码段:

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.formLogin().and().authorizeRequests().antMatchers("/spitter/")
            .authenticated().antMatchers(HttpMethod.GET, "/spitter/register")
            .authenticated();
    }

现在,当用户在浏览器中输入

  

http://localhost:8080/web/spitter/ 注册

他被重定向到登录页面以验证自己,而

  

http://localhost:8080/web/spitter/ 寄存器/

不会将他重定向到登录页面,这是安全失误。  我必须将此条目录入

  

antMatchers(HttpMethod.GET,“/ spitter / register / ”)。authenticated()

除了

  

antMatchers(HttpMethod.GET,“/ spitter / register”)。authenticated()

有什么办法解决这个问题,否则只需将 / 附加到重定向到登录页面就可以加倍努力?

1 个答案:

答案 0 :(得分:0)

尝试这种模式

/spitter/register/**