我正在使用Spring Boot 2.1.9.RELEASE spring-boot-starter-security 2.1.8.RELEASE 但是当我使用loadByUsername函数时,会得到一个空的用户名
我的登录页面
this.$axios({
method: 'post',
url: "api/login",
data:this.loginForm,
headers:{'Content-Type': 'application/x-www-form-urlencoded'}}
)
我的安全性配置
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UserServiceImpl userServiceImpl;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
auth.userDetailsService(userServiceImpl).passwordEncoder(new BCryptPasswordEncoder() {
@Override
public String encode(CharSequence charSequence) {
return DigestUtils.md5DigestAsHex(charSequence.toString().getBytes());
}
@Override
public boolean matches(CharSequence charSequence, String s) {
return s.equals(DigestUtils.md5DigestAsHex(charSequence.toString().getBytes()));
}
});
}
@Override
protected void configure(HttpSecurity http) throws Exception{
http.authorizeRequests()
.antMatchers("/admin/category/all").authenticated()
.antMatchers("/admin/**","/reg").hasRole("超级管理员")
.anyRequest().anonymous()
.and().formLogin().loginPage("/api/login")
.usernameParameter("username")
.passwordParameter("password")
.permitAll()
.and().logout().permitAll().and().csrf().disable().exceptionHandling();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/blogimg/**","/index.html","/static/**");
}
}
我的loadUserByUserName方法
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Optional<User> user = Optional.ofNullable(userMapper.loadUserByUsername(username));
User user1 = user.orElse(new User());
List<Role> roles = rolesMapper.getRolesByUid(user1.getId());
user1.setRoles(roles);
return user1;
}
loadUserByUsername()方法始终为空用户;
如果我在url中加入参数,则loadUserByUserName()可以获取用户名;