Spring Security将URL参数传递给Authentication Provider

有没有办法将URL参数传递给Spring Security 3中的身份validation提供程序?

我们的登录页面需要接收电子邮件令牌作为身份validation系统在设置用户状态时需要注意的参数。 具体来说,它将允许具有正确令牌登录的用户无法以其他方式登录。

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

我希望有一些方法可以将这些数据传递给authenticate方法。

您可以在身份validation提供程序类上注入HttpServletRequest对象:

private @Autowired HttpServletRequest request; 

现在,您应该能够使用API​​(例如request.getParameterValues(paramName)访问请求参数

您需要覆盖UsernamePasswordAuthenticationFilter.setDetails()并通过UsernamePasswordAuthenticationToken details属性将额外信息传递给您的自定义身份validation提供程序。