使用电子邮件和密码登录Spring Boot Security

时间:2019-02-05 18:50:09

标签: spring-boot spring-security

问题:无法在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);
	}


}

0 个答案:

没有答案