TokenEndpoint 中的 NullPointerException

Posted

技术标签:

【中文标题】TokenEndpoint 中的 NullPointerException【英文标题】:NullPointerException in TokenEndpoint 【发布时间】:2021-08-05 00:06:54 【问题描述】:

LE:我最初认为这与 JPQL 查询有关 - 请参见下文。

我正在努力解决一个问题,但我似乎找不到任何解决方案。我正在尝试在数据库中查找用户。搜索条件是用户名或电子邮件地址。用户可能没有用户名,所以我总是在我的CrudRepository 中获得NullPointerException。我已经尝试过 JPQL 和原生查询,但我总是得到相同的结果。

我可以在 mysql Workbench 中成功运行本机查询 - 在 Java 中它会引发异常。

这是我使用本机查询时的存储库:

@Query(value = "select * from users u where " +
        "(u.username is not null and u.username = :queryString) or " +
        "(u.email_address is not null and u.email_address = :queryString)",
        nativeQuery = true)
Optional<User> findByEmailAddressOrUsername(@Param("queryString") String queryString);

还有 JPQL:

@Query("select u from user u where " +
        "(u.emailAddress is not null and u.emailAddress = ?1) or " +
        "(u.username is not null and u.username = ?1)")
Optional<User> findByEmailAddressOrUsername(String queryString);

有什么建议吗?

非常感谢。

【问题讨论】:

您应该将异常堆栈跟踪附加到您的问题中 【参考方案1】:

嗯,看来我终于找到了问题所在。这比我预期的要微妙得多。它与 JPQL 或 SQL 查询无关,它们非常好。问题实际上出在我的自定义TokenEnhancer 中,在那里我检查了我的UserDetails。由于getUsername() 返回null(因为某些用户没有用户名,这将触发我之前提到的NullPointerException

【讨论】:

以上是关于TokenEndpoint 中的 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

使用myeclipse tomcat插件部署web项目时报错 an internal error occurred during add deployment . java.lang.nullpoin

org.springframework.security.oauth2.provider.endpoint.TokenEndpoint handleException

Spring OAuth2中Token Endpoint的自定义

AWS Cognito oauth2/token 端点中的 405 方法不允许错误

使用 MVC 模式在 JSP 页面中的 HTML <table> 中显示 JDBC ResultSet - NullPointerException

从Spring Security Oauth2中的Token Store检索访问和刷新令牌的方法