gpt4 book ai didi

java - 身份验证处理程序中的 Spring Autowiring

转载 作者:行者123 更新时间:2023-12-01 19:50:04 24 4
gpt4 key购买 nike

我是 spring 新手,我正在尝试创建自己的用户并对其进行身份验证。到目前为止,一切正常,我可以登录和注销,但我无法在身份验证成功/失败处理程序中自动连接我的用户存储库。我可以在其他地方执行此操作,例如在 Controller 中。

我的处理程序如下所示:

@Service
public class MyAuthenticationSuccessHandler extends
SavedRequestAwareAuthenticationSuccessHandler {

@Autowired
UserRepository userRepository;

@Override
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication authentication)
throws ServletException, IOException {
[...]
User user = (User)authentication.getPrincipal();
user.setLastLogin(now);
userRepository.save(user);
[...]
}
}

当我尝试保存用户时,出现空指针异常,因为用户存储库为空。

用户存储库如下所示:

@Repository
public interface UserRepository extends CrudRepository<User, Long> {
Optional<User> findByName(String name);
}

但是我可以在其他地方 Autowiring 它,就像我在成功处理程序中尝试的那样。例如在 Controller 中。

有人可以告诉我我做错了什么吗?

最佳答案

当我使用此类时,我用 @Component 注释它,而不是 @Service (美观)。

如果此时您收到 NPE,那是因为 MyAuthenticationSuccessHandler 未受到管理。您可以扫描包或在 Configuration 类中扫描包或 @Bean

关于java - 身份验证处理程序中的 Spring Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51648521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com