Java Spring安全性将URL参数传递给身份验证提供程序

Java Spring安全性将URL参数传递给身份验证提供程序,java,spring,authentication,spring-security,Java,Spring,Authentication,Spring Security,在SpringSecurity3中有没有一种方法可以将URL参数传递给身份验证提供者 我们的登录页面需要接收电子邮件令牌作为参数,身份验证系统在设置用户状态时需要知道该参数。具体来说,它将允许具有正确令牌的用户登录,否则将无法登录 我有一个自定义类扩展了DaoAuthenticationProvider类。我的身份验证逻辑在该类的authenticate方法中 我希望有某种方法可以将此数据传递到authenticate方法。您可以将HttpServletRequest对象注入到您的身份验证提供程

在SpringSecurity3中有没有一种方法可以将URL参数传递给身份验证提供者

我们的登录页面需要接收电子邮件令牌作为参数,身份验证系统在设置用户状态时需要知道该参数。具体来说,它将允许具有正确令牌的用户登录,否则将无法登录

我有一个自定义类扩展了DaoAuthenticationProvider类。我的身份验证逻辑在该类的authenticate方法中


我希望有某种方法可以将此数据传递到authenticate方法。

您可以将HttpServletRequest对象注入到您的身份验证提供程序类中:

private @Autowired HttpServletRequest request;

现在,您应该能够使用API访问请求参数,例如
request.getParameterValues(paramName)
您需要通过
UsernamePasswordAuthenticationToken
details
属性覆盖并将额外信息传递给您的自定义身份验证提供商,是在默认登录筛选器中插入自定义authenticationDetailsSource。另一个选项可能是spring方法,但这很简单。为什么这是选择的答案?HttpServletRequest在AuthenticationProvider中不可用。尝试访问它将导致“未找到线程绑定请求”错误。不知道您遇到的问题。它对我有效。这对我有效,@JackB可能您没有在spring安全上下文中包含HTTPServletRequest。Spring上下文和Spring安全上下文是两个不同的概念