有人可以帮我解决一下如何在自定义登录jsp文件中添加更多字段?默认值为“j_username”和“j_password”。如果我想添加更多字段,并希望在扩展CustomAuthenticationProvider
的{{1}}类中获取该字段,该怎么办?如果有任何资源或链接,请告诉我。
答案 0 :(得分:7)
引用official FAQ:
1.1。我需要登录的信息不仅仅是用户名。如何添加对额外登录字段(例如公司名称)的支持?
这个问题在Spring Security论坛中反复出现,因此您可以通过搜索档案(或通过谷歌)找到更多信息。
提交的登录信息由
UsernamePasswordAuthenticationFilter
的实例处理。您需要自定义此类以处理额外的数据字段。一种选择是使用您自己的自定义身份验证令牌类(而不是标准UsernamePasswordAuthenticationToken
),另一种选择只是将额外字段与用户名连接起来(例如,使用“:
”作为分隔符)并在UsernamePasswordAuthenticationToken
的用户名属性中传递它们。您还需要自定义实际的身份验证过程。例如,如果您使用自定义身份验证令牌类,则必须编写
AuthenticationProvider
来处理它(或扩展标准DaoAuthenticationProvider
)。如果您已连接这些字段,则可以实现自己的UserDetailsService
,将其拆分并加载相应的用户数据以进行身份验证。