Spring Security :使用formlogin配置jwt

qpgpyjmq  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(291)

我正在尝试用formlogin身份验证配置jwt过滤器(我的服务器服务于ui客户机(这就是为什么我需要formlogin),我还公开了rest端点(由jwt验证)。目前我的jwt正在工作,但是我的角色(anyrole)似乎不工作。
这里是我的配置方法:登录后->如果我试图达到/kuku路径-我得到302和登录页面再次。
如果我删除addfilterbefore->我的角色工作正常。

protected void configure(HttpSecurity http) throws Exception {

    http.
            authorizeRequests()
            .antMatchers("/login").permitAll()
            .antMatchers("/").hasRole("ADMIN")
            .antMatchers("/kuku/**").hasRole("ADMIN")
            .anyRequest()
            .authenticated()
            .and()
            .formLogin().defaultSuccessUrl("/inital.html", true)
    ;

    http.addFilterBefore(new JwtFilter(), UsernamePasswordAuthenticationFilter.class);

        @Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    String userName = "Admin"; // currently due to Vault IMPL - this  input is hardcoded .
    String password ="Admin"
    auth.inMemoryAuthentication()
            .withUser(userName).password(passwordEncoder().encode(password))
            .roles("ADMIN");
}
kg7wmglp

kg7wmglp1#

尝试将csrf().disable()添加到configure(http)方法。这在我的情况下,我有类似的配置你的工作。尽管如此,我还是建议搜索是否安全,因为这会禁用内置的csrf保护。

相关问题