问题:无法在Spring Boot应用程序中使用安全登录名登录。 当我尝试登录页面时,出现“ .failureUrl(“ / login?error = true”)”页面。 但是我的用户名和密码是真实的。 我在代码中使用电子邮件而不是用户名。 在形式上,我的输入的名称为j_username和j_password,这些名称在UserServiceImpl.java中具有相同的名称,但仍然无法登录。
Anasayfa.html
<form name='f' action="j_spring_security_check" method='POST'>
<table>
<tr>
<td>User:</td>
<td><input type='text' name='j_username'>
</td>
</tr>
<tr>
<td>Password:</td>
<td><input type='password' name='j_password' />
</td>
</tr>
<tr>
<td colspan='2'><input name="submit" type="submit"
value="submit" />
</td>
</tr>
</table>
<input type="hidden"
name="${_csrf.parameterName}"
value="${_csrf.token}"/>
SecurityConfiguration.java
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http
.authorizeRequests()
.antMatchers(
"/fonts**",
"/js/**",
"/css/**",
"/images/**",
"/*.html").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/Anasayfa.html")
.loginProcessingUrl("/j_spring_security_check")
.usernameParameter("j_username")
.passwordParameter("j_password")
.failureUrl("/login?error=true")
.permitAll()
.and()
.logout()
.invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/Anasayfa.html") //FIXME logout islemleri yapilacak
.permitAll();
}
UserServiceImpl.java
public class UserServiceImpl implements UserService {
@Autowired
private KullaniciRepository userRepository;
public Kullanici findByEmail(String email){
return userRepository.findByEmail(email);}
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
Kullanici user = userRepository.findByEmail(email);
if(user == null){
throw new UsernameNotFoundException("EMail Bulunamadı!");
}
return new org.springframework.security.core.userdetails.User(user.getEmail(), user.getSifre(), null);
}
}