对URL的ROLE_USER和ADMIN访问限制

时间:2016-06-18 02:22:47

标签: spring spring-mvc spring-security spring-boot

我有

  

/ welcome / employees - 员工名单

     

/ welcome / employees / edit / - 编辑员工

     

/ welcome / employees / find / - 查找员工

我想定义ADMIN来访问所有内容,但USER只是为了查看列表并查找。

我应该如何配置。

   @Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        .antMatchers("/welcome", "/welcome/employees", "/welcome/employee/find").access("hasRole('ROLE_USER')")
        .antMatchers("/welcome/**").access("hasRole('ROLE_ADMIN')")
        .and()
            .formLogin().loginPage("/login")
            .defaultSuccessUrl("/welcome")
            .failureUrl("/login?error")
            .usernameParameter("username").passwordParameter("password")                
        .and()
            .logout().logoutSuccessUrl("/login?logout"); 

}

1 个答案:

答案 0 :(得分:2)

如果您没有指定ROLE来访问每个经过身份验证的用户都可以访问该网址。你可以这样试试。

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
    .antMatchers("/welcome/employees/edit/**").access("hasRole('ROLE_ADMIN')")
    .anyRequest().fullyAuthenticated()
    // part of your config
}

如果USER尝试访问/welcome/employees/edit/,则会收到403错误。但ADMIN可以使用此配置访问每个网址。因为如果您没有指定访问角色,则每个人都可以访问该网址。但除了edit页面外,每位用户如果登录都可以访问every url。请不要忘记这一点。