Potrzebuje pomocy z pobraniem danych z DB Klientów.
Nie rozumiem w czym może być problem.
Z kodowaniem hasła ?
Podczas próby zalogowania wyskakuje "Błędne dane"
Czy mogę jakoś sprawdzić, czy cokolwiek jest w ogóle pobierane z bazy danych ?
Zaczynam przygodę ze Springiemi Hibernatem dopiero
Dzięki !
login.jsp
<html xmlns:th="https://www.thymeleaf.org">
<head th:include="layout :: head(title=~{::title},links=~{})">
<title>Please Login</title>
</head>
<body th:include="layout :: body" th:with="content=~{::content}">
<div th:fragment="content">
<form name="f" th:action="@{/login}" method="post">
<fieldset>
<legend>Please Login</legend>
<div th:if="${param.error}" class="alert alert-error">
Invalid username and password.
</div>
<div th:if="${param.logout}" class="alert alert-success">
You have been logged out.
</div>
<label for="username">Username</label>
<input type="text" id="username" name="username"/>
<label for="password">Password</label>
<input type="password" id="password" name="password"/>
<div class="form-actions">
<button type="submit" class="btn">Log in</button>
</div>
</fieldset>
</form>
</div>
</body>
Klasa z Klientem
@Entity
@Table
public class Client {
public Client()
{
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
Client(Long id,String username,String passowrd)
{
this.id=id;
this.username=username;
this.password=passowrd;
}
//Gettery i Settery
Klient Repository
public interface ClientRepository extends JpaRepository<Client, Long> {
Client findByUsername(String username);
}
WebConfig
@Configuration
@EnableWebSecurity
public class AppSecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder()
{
return new BCryptPasswordEncoder();
}
@Bean
public AuthenticationProvider authenticationProvider()
{
DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
daoAuthenticationProvider.setUserDetailsService(userDetailsService());
daoAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder());
return daoAuthenticationProvider;
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication()
.withUser("spring")
.password("secret")
.roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests().antMatchers("/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.and()
.logout().invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll();
}
}
Klient Principal
public class ClientPrincipal implements UserDetails {
private Client client;
public ClientPrincipal(Client client) {
this.client = client;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return Collections.singleton(new SimpleGrantedAuthority("USER"));
}
@Override
public String getPassword() {
return client.getPassword();
}
@Override
public String getUsername() {
return client.getUsername();
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
Klasa Implementująca UserDetailsService
@Service
public class MyUserDetailsService implements UserDetailsService {
@Autowired
private ClientRepository clientRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Client client = clientRepository.findByUsername(username);
System.out.println("UserName" + username);
System.out.println(client.toString());
return new ClientPrincipal(client);
}
}
@Controller
public class WelcomeController {
@Autowired
BCryptPasswordEncoder bCryptPasswordEncoder;
@Autowired
ClientRepository clientRepository;
@RequestMapping("/")
public String welcome(ModelMap map) {
Client client = new Client();
// client.setPassword(bCryptPasswordEncoder.encode("test3"));
// client.setUserName("test3");
// clientRepository.save(client);
return "welcome.jsp";
}
@RequestMapping("/login")
public String login()
{
return "login.jsp";
}
@RequestMapping("/logout")
public String logout()
{
return "logout.jsp";
}
}