0

我正在使用 Spring 安全 3.x。在我的登录页面中,有一个额外的字段,用户可以扫描身份证来填充。如果他们这样做,则不需要用户名(根据扫描的 ID 进行查找),但密码仍然是。

问题是我的自定义用户名是必需的AuthenticationProvider。ID 在此之前的过滤器中捕获 ( UsernamePasswordAuthenticationFilter)。我不知道如何连接它们,所以我AuthProvider知道它不需要用户名(而且,由于它传递了一个 Authentication 对象,所以此时它如何获取 ID?)。

4

2 回答 2

1

您可能需要一种特殊类型的身份验证接口,它不是 UsernamePasswordAuthenticationToken,因此不需要用户名和密码。然后您的 AuthenticationProcessingFilter/AuthenticationProvider 可能会创建其中之一。以 spring-cas-client 和CasAuthenticationToken为例。

于 2013-02-15T05:34:12.353 回答
0

我正在扩展的过滤器是 FORM_LOGIN_FILTER,这是正确的,但是我需要在此处执行所有检索(j_username,j_password)并手动调用身份验证管理器,而不是调用将检索和身份验证管理器调用传递给的 super() 方法春天。这也需要扩展 UsernamePasswordAuthenticationToken。一旦我这样做了,它们就会连接起来。

于 2013-02-15T04:23:53.547 回答