【问题标题】:403 denied access with Spring Security403 拒绝使用 Spring Security 访问
【发布时间】:2016-11-24 03:18:53
【问题描述】:

我正在使用 Spring 构建一个应用程序,并且我使用了 Spring Security。问题是我不能用 authorizeRequests 链做对。我有 3 个角色:

ROLE_RH 可以访问具有上下文 RH 的视图

ROLE_GP 可以访问具有上下文 GP 的视图

ROLE_SUPER 可以访问所有视图,包括上下文 RH 和 GP

我的 authorizeRequests 链如下所示:

    http.authorizeRequests()
        .antMatchers("/bootstrap/**", "/dist/**", "/plugins/**").permitAll()
        .antMatchers("/RH/**").hasRole("RH")
        .antMatchers("/GP/**").hasRole("GP")
        .antMatchers("/**").hasRole("SUPER")
        .and()
    .formLogin()
        .failureUrl("/login?error")
        .loginPage("/login").usernameParameter("nombreUsuario").passwordParameter("contrasena")
        .defaultSuccessUrl("/default")
        .and()
    .logout()
        .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
        .logoutSuccessUrl("/login")
        .permitAll()
        .and().csrf()
        .and().exceptionHandling().accessDeniedPage("/403");

但是当我以 ROLE_SUPER 登录时,我无法访问 RH 和 GP 视图,每次都被拒绝访问。 我尝试将 ROLE_SUPER 的 .antMatcher 更改为此

.antMatchers("/GP/**","/RH/**","/DB/**").hasRole("SUPER")

当我尝试以 ROLE_GP 或 ROLE_RH 登录时,他们的视图也被拒绝访问。 角色不能共享相同的上下文?当 ROLE_SUPER 工作时,ROLE_GP 和 ROLE_RH 不工作,反之亦然。我做错了什么?

提前感谢您的帮助。

【问题讨论】:

    标签: spring spring-security


    【解决方案1】:

    我做了一些研究并找到了适合我的解决方案:

    http.authorizeRequests()
            .antMatchers("/bootstrap/**", "/dist/**", "/plugins/**").permitAll()
            .antMatchers("/DB/**").hasRole("SUPER") 
            .antMatchers("/RH/**").access("hasRole('ROLE_SUPER') or hasRole('ROLE_RH')")
            .antMatchers("/GP/**").access("hasRole('ROLE_SUPER') or hasRole('ROLE_GP')")
    

    【讨论】:

      猜你喜欢
      • 2020-01-25
      • 2015-08-07
      • 2018-03-20
      • 2023-03-16
      • 2017-01-10
      • 2015-09-15
      • 2012-02-15
      • 2015-11-13
      • 2018-04-23
      相关资源
      最近更新 更多