gpt4 book ai didi

java - Spring - 从 Controller 调用 custom-authentication-provider

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:23:27 25 4
gpt4 key购买 nike

我在我的 Spring Security 配置中定义了一个自定义身份验证提供程序。此类实现了 AuthenticationProvider,我可以使用页面上定义的表单成功登录。问题是我不仅想在登录页面上调用此类,还想在注册页面上调用此类。

注册页面使用不同的命令类并收集比登录表单更多的信息。现在,当用户注册时,我会调用相应的 Controller ,将记录添加到数据库中,然后他们就可以登录,但不会自动登录。由于他们刚刚在注册页面上给了我他们的用户名/密码,我可以将其传递给自定义 AuthenticationProvider 类以便他们也登录吗?

我已经尝试在注册 Controller 中创建一个 org.springframework.security.Authentication 类,并在我的客户 AuthenticationProvider 类上调用 authenticate 方法,这不会出错,但用户没有登录。做我必须调用 Spring Security 过滤器链中更高层的方法来完成此操作吗?我应该将 Controller 重定向到 j_spring_security_check URL 吗?如果是这样,我将如何传递用户名/密码?

最佳答案

您需要将 AuthenticationProvider.authenticate() 的结果放入 SecurityContext(从 SecurityContextHolder 获取)。

还要注意 AuthenticationSuccessEvent - 如果您的应用程序依赖此事件(某些 Spring Security 功能也可能使用它),您应该发布它(您可以获得默认的 AuthenticationEventPublisher 通过 Autowiring )。使用 ProviderManager 包装您的身份验证提供程序可能很有用,它会使用给定的发布者自动发布事件。

关于java - Spring - 从 Controller 调用 custom-authentication-provider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160265/

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