Как получить информацию о пользователях, которую они дают при регистрации для входа в систему? - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь создать рабочую регистрацию / логин.Однако во время этого процесса я столкнулся с проблемой, когда я не могу войти, несмотря на использование зарегистрированной учетной записи, которая была создана с помощью страницы регистрации заранее.Судя по тому, что я вижу, в моем классе контроллера, похоже, есть ошибка, но я не могу ее найти.Как реализовать метод, позволяющий входу в систему извлекать зарегистрированные данные из базы данных для использования при входе в систему?

Я не пробовал ни одного метода, поскольку не могу обнаружить ошибку

Воткод входа в систему:

@Autowired
UserRepository userrepository;

@RequestMapping("/login")
public String loginPage()
{
    return "login";
}

@RequestMapping("/logout-success")
public String logoutPage()
{
    return "logout";
}

Вот регистрационный код:

@RequestMapping("/register")
public String register() {      
    return "signup";
}

@RequestMapping(value = "/register/user")
public String addUser(@RequestParam String username, @RequestParam String password) {
    User user = new User(username, password);
    userrepository.save(user);
    return "redirect:/login";
}

вот код репозитория:

User findByUsername(String username);

Вот код для пользователя:

@Id
private long id;

private String username;
private String password;
private String email;

public User(String username, String password) { 
    this.username = username;
    this.password = password;
}

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

А вот код формы AppSecurityConfig, MyUserDetailsService и UserDetailImplementation

AppSecurityConfig:

@Autowired
private UserDetailsService userDetailsService;

@Bean
public AuthenticationProvider authProvider()
{
    DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
    provider.setUserDetailsService(userDetailsService);
    provider.setPasswordEncoder(new BCryptPasswordEncoder());
    return provider;
}

@Override
protected void configure(HttpSecurity http) throws Exception {

        http.csrf().disable()
            .authorizeRequests().antMatchers("/login", "/", "/register", "/register/user").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/login").permitAll()
            .and()
            .logout().invalidateHttpSession(true)
            .clearAuthentication(true)
            .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
            .logoutSuccessUrl("/logout-success").permitAll();

}

MyUserDetailsService:

@Autowired
private UserRepository repo;

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

    User user = repo.findByUsername(username);

    if(user==null)
        throw new UsernameNotFoundException("User 404");

    return new UserPrincipal(user);
}
* 1024lee: пользовательская / пользовательская версия: пользовательский интерфейс
private User user;

public UserPrincipal(User user) {
    super();
    this.user = user;
}

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
    return Collections.singleton(new SimpleGrantedAuthority("USER"));
}

@Override
public String getPassword() {
    // TODO Auto-generated method stub
    return user.getPassword();
}

@Override
public String getUsername() {
    // TODO Auto-generated method stub
    return user.getUsername();
}

@Override
public boolean isAccountNonExpired() {
    // TODO Auto-generated method stub
    return true;
}

@Override
public boolean isAccountNonLocked() {
    // TODO Auto-generated method stub
    return true;
}

@Override
public boolean isCredentialsNonExpired() {
    // TODO Auto-generated method stub
    return true;
}

@Override
public boolean isEnabled() {
    // TODO Auto-generated method stub
    return true;
}

Вот страница входа в систему и регистрации html:

Логин:

<form action="login" method='POST'>
  <table>
     <tr>
        <td>User:</td>
        <td><input type='text' name='username' value=''></td>
     </tr>
     <tr>
        <td>Password:</td>
        <td><input type='password' name='password' /></td>
     </tr>
     <tr>
        <td><input name="submit" type="submit" value="submit" /></td>
     </tr>
  </table>
</form>
</body>

Регистрация:

<form action="/register/user" method='POST'>
  <table>
     <tr>
        <td>User:</td>
        <td><input type='text' name='username' value=''></td>
     </tr>
     <tr>
        <td>Password:</td>
        <td><input type='password' name='password' /></td>
     </tr>
     <tr>
        <td><input name="submit" type="submit" value="submit" /></td>
     </tr>
  </table>
</form>

Из кода вышеКажется, в коде нет ничего плохого.Ожидаемый результат - информация о регистрации пользователя может использоваться для входа в систему, однако при попытке входа она не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...