考虑一下代码段:
@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>
我在网络浏览器中输入以下 网址 :
我在下面的页面中看到,根据功能,这很好:
现在,如果我稍微修改了 网址 ,并做了类似的事情
然后还会呈现 同一页 ,
为什么呢?即使输入的 地址(网址) 未指向映射到控制器中的 请求 。
有什么建议吗?
编辑:
当我必须使用Spring Security时,整个问题就出现了。
考虑一下代码段:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin().and().authorizeRequests().antMatchers("/spitter/")
.authenticated().antMatchers(HttpMethod.GET, "/spitter/register")
.authenticated();
}
现在,当用户在浏览器中输入
时他被重定向到登录页面以验证自己,而
不会将他重定向到登录页面,这是安全失误。 我必须将此条目录入
antMatchers(HttpMethod.GET,“/ spitter / register / ”)。authenticated()
除了
antMatchers(HttpMethod.GET,“/ spitter / register”)。authenticated()
有什么办法解决这个问题,否则只需将 / 附加到重定向到登录页面就可以加倍努力?
答案 0 :(得分:0)
尝试这种模式
/spitter/register/**