Spring引导、Spring安全、MySQL-CustomUserDetails服务总是导致错误“无效用户名或密码”

Spring引导、Spring安全、MySQL-CustomUserDetails服务总是导致错误“无效用户名或密码”,mysql,spring,spring-mvc,spring-boot,spring-security,Mysql,Spring,Spring Mvc,Spring Boot,Spring Security,我的问题是由我自己造成的 我的问题是,我总是遇到这样一个问题:我的用户被从数据库中读取,但我没有得到身份验证。在视图上,它始终显示错误消息“无效用户名或密码”。我的控制台输出没有显示错误。当我通过身份验证过程进行调试时,没有出现错误可能来自的不明确行为 在pom.xml中,我使用了以下依赖项 <dependencies> <dependency> <groupId>junit</groupId> <artifa

我的问题是由我自己造成的

我的问题是,我总是遇到这样一个问题:我的用户被从数据库中读取,但我没有得到身份验证。在视图上,它始终显示错误消息“无效用户名或密码”。我的控制台输出没有显示错误。当我通过身份验证过程进行调试时,没有出现错误可能来自的不明确行为

在pom.xml中,我使用了以下依赖项

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
  </dependencies>
正如我前面提到的,我认为这个错误不会发生在数据库上。我使用了教程中的数据库方案。我还使用了User.java UserRole.java和教程中的两个存储库

我的Application.java如下所示

@Service("customUserDetailsService")
public class CustomUserDetailsService implements UserDetailsService {

    private final UserRepository userRepository;
    private final UserRolesRepository userRolesRepository;

    @Autowired
    public CustomUserDetailsService(UserRepository userRepository,
            UserRolesRepository userRolesRepository) {

        this.userRepository = userRepository;
        this.userRolesRepository = userRolesRepository;

    }

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

        User user = userRepository.findByUserName(username);

        if (user == null) {
            throw new UsernameNotFoundException("No user present with username " + username);
        }
        else {
            List<String> userRoles = userRolesRepository.findRoleByUserName(username);
            return new CustomUserDetails(user, userRoles);
        }

    }

}
@SpringBootApplication
@EnableJpaRepositories(basePackages = "<package>")
@EntityScan(basePackages = "<package>")
public class Application {

    public static void main(String[] args) throws Throwable {

        SpringApplication.run(Application.class, args);
    }

}
更新1:链接到Git项目


您可能需要编辑src/main/resources/application.properties来支持您的数据库。我包含了用于创建数据库表的sql脚本

通过添加此行,我在application.properties中启用了跟踪日志记录

logging.level.=TRACE
并看到了错误消息

org.springframework.security.authentication.LockedException: User account is locked
在控制台中

自定义用户详细信息类de.dhbw.stuttgart.speeddating.userhandling.service.impl.CustomUserDetails从方法IsAccountNoneExpired、isAccountNonLocked和IsCredentialNonexpired返回false。我想这些方法应该返回类de.dhbw.stuttgart.speeddating.userhandling.service.User中启用的属性的值


将所有这些false更改为true后,登录过程开始按预期工作。

您能分享您的源代码吗?给定教程中的应用程序工作不正常,它抱怨缺少页面等。感谢您的回复,我添加了git项目的链接。这就是解决方案。非常感谢你!
logging.level.=TRACE
org.springframework.security.authentication.LockedException: User account is locked