我正在尝试用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");
}
1条答案
按热度按时间kg7wmglp1#
尝试将csrf().disable()添加到configure(http)方法。这在我的情况下,我有类似的配置你的工作。尽管如此,我还是建议搜索是否安全,因为这会禁用内置的csrf保护。