【发布时间】:2016-08-08 10:35:37
【问题描述】:
我第一次尝试使用 Spring Security 并且真的被困在这样一个任务上:我有一个默认网页,它应该是默认未经过身份验证的,并且我有一批控制器调用,我想要使用 PreAuthorized 注释确保安全。基本思想是,我想禁用默认的“重定向到登录页面”,但仍然有机会操作 Spring Security 的方法安全复合体。
我正在使用 java 配置,如下所示:
@Configuration
@EnableWebSecurity
public class SpringWebSecurityConfig extends WebSecurityConfigurerAdapter{
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/res/**"); // #3
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**").authorizeRequests().anyRequest().permitAll();
}
}
我知道(或似乎理解)此时我的所有电话都应该被允许(过去两天一直坐在这个上面,显然没有想法)。
我想要保护的控制器的方法是:
@PreAuthorize("hasRole('ADMIN')")
@RequestMapping(value="/admin", method = RequestMethod.GET)
public String getAdminPage(Model model){
return "admin";
}
我知道我可以使用antMatcher添加“/**/admin”并授权对特定url的调用,但总体思路是:
- 禁用根目录上的“转到登录页面”(和其他随机控制器映射)。
- 从 ajax 下拉菜单(或其他)执行基于 ajax 的手动身份验证。
- 当一个随机的未经授权的用户碰到一个在控制器上有一个@PreAuthorized 的页面时,只有这样,他才应该被重定向。
UPD:基本问题是仅在访问被拒绝的情况下调用重定向到登录页面,允许基本站点视图和调用的匿名角色。
【问题讨论】:
标签: java spring security spring-mvc spring-security