Qnix_ 2021-04-10 23:37 采纳率: 50%
浏览 1489
已采纳

SpringSecurity 角色控制 antMatchers().hasRole无效

protected void configure(HttpSecurity http) throws Exception {
        http.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
        http.authorizeRequests()
                .antMatchers("/auth/login").permitAll()
                .antMatchers("/auth/test").hasRole("ADMIN") // 这里的配置不起作用,其他角色一样可以访问
                .anyRequest().authenticated()
                .and().exceptionHandling()
                .accessDeniedHandler((req, resp, e)-> resultUtil.write(resp, ResultCode.UNAUTHORIZED, null))
                .authenticationEntryPoint((req, resp, e) -> resultUtil.write(resp, ResultCode.NO_LOGIN, null))
                .and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .csrf().disable()
                .cors();
}

其他的hasAnyRole, hasAuthority, hasAnyAuthority同样也不起作用。

springboot 版本 2.3.7.RELEASE

  • 写回答

6条回答 默认 最新

  • cnkeysky 2021-04-11 18:38
    关注
    @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth.inMemoryAuthentication()
                    .withUser("admin")
                    .password(passwordEncoder().encode("admin"))
                    .roles("admin")
                    .and()
                    .withUser("tom")
                    .password(passwordEncoder().encode("root"))
                    .roles("user");
        }

    你用基于内存的方法去测试一下,可能是你 UserDetails 的实现类中的 getAuthorities 写的有问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。