当前位置: 首页 > 知识库问答 >
问题:

JwtSpring安全栓

唐焕
2023-03-14

Spring Security配置

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UsersDetailsService usersDetailsService;
    @Autowired
    private JwtFilter jwtFilter;

    public SecurityConfig(UsersDetailsService usersDetailsService) {
        this.usersDetailsService = usersDetailsService;
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(daoAuthenticationProvider());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().cors().and().authorizeRequests()
                .antMatchers("/api/authenticate").anonymous()
                .antMatchers("/api/generateTPAC").anonymous()
                .antMatchers("/api/register").anonymous()
                .antMatchers("/api/generate2FAcode").anonymous()
                .antMatchers("/api/verify-email**").anonymous()
                .antMatchers("/api/retrieveUserInfo").permitAll()
                .antMatchers("/api/validateToken").permitAll()
                .antMatchers("/api/update**").permitAll()
                .antMatchers("/api/uploadImage").permitAll()
                .antMatchers("/api/image").permitAll()
                .anyRequest().authenticated()
                .and()
                .exceptionHandling()
                .and()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        http.addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class);
    }

    @Bean
    DaoAuthenticationProvider daoAuthenticationProvider() {
        DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
        daoAuthenticationProvider.setUserDetailsService(usersDetailsService);
        daoAuthenticationProvider.setPasswordEncoder(passwordEncoder());
        return daoAuthenticationProvider;
    }

    @Bean(name = BeanIds.AUTHENTICATION_MANAGER)
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

}

你好,我设置antMatchers授权有困难。。它没有发挥应有的作用。只有permitAll有效,denyAll、匿名、hasRole、认证无效。。我试过使用。access(hasRole())但这根本不起作用。。

共有1个答案

江鹏飞
2023-03-14

因为您使用的是UserDetailsService,它返回接口org的一个实例。springframework。安全果心用户详细信息。使用权限的用户详细信息。

所以你像这样控制入口

.antMatchers("/api/authenticate").hasAuthority("ROLE_ANONYMOUS")

或者

.antMatchers("/api/authenticate").hasAuthority("ROLE_ADMIN")

请验证你的用户详细信息服务bean。它应该具有loadUserByUsername函数,该函数返回组织的实例。springframework。安全果心用户详细信息。用户详细信息。检查这个物体的权威。

 类似资料:
  • 嗨,我不知道我是否理解刷新令牌应该如何工作。我正在用angular创建spring boot后端,我想实现JWT。目前我正在后端工作。访问令牌15分钟后过期刷新令牌:过期日期7天 当angular发送带有凭据的请求时,我的spring boot将生成jwt令牌和刷新令牌。每个刷新令牌和访问令牌都有不同的秘密(因为如果它们有相同的秘密,则有人可以使用刷新令牌访问资源) 如果令牌过期,angular应

  • 安全在Web应用开发中是一项至关重要的话题,Django提供了多种保护手段和机制:

  • Elasticsearch-PHP 客户端支持两种安全设置方式:HTTP 认证和 SSL 加密。 HTTP 认证 如果你的 Elasticsearch 是通过 HTTP 认证来维持安全,你就要为 Elasticsearch-PHP 客户端提供身份凭证(credentials),这样服务端才能认证客户端请求。在实例化客户端时,身份凭证(credentials)需要配置在 host 数组中: $hos

  • 安全 no_file_caps 要求内核无视文件的权限。这样,执行文件的唯一途径就只有:由root去执行或者setuid root noexec={on|off} noexec32={on|off} 是否允许将某部分内存映射为"禁止执行",这是一种防止数据缓冲区溢出攻击的保护措施(也就是WinXP SP2曾经大力宣传的数据执行保护功能),建议保持默认值"on"。 [说明]noexec对32bit代

  • 请参考:http://www.kancloud.cn/manual/thinkphp/1840

  • 评估 Docker 的安全性时,主要考虑三个方面: 由内核的命名空间和控制组机制提供的容器内在安全 Docker 程序(特别是服务端)本身的抗攻击性 内核安全性的加强机制对容器安全性的影响