在PasswordEncoder中获取用户名

问题描述 投票:2回答:2

我为我的spring应用程序创建了自己的身份验证提供程序,我在其上指定了org.springframework.security.crypto.password.PasswordEncoder。我的用户使用加密密码存储在数据库中(在数据库算法之后)。为了能够进行身份验证,我需要从org.springframework.security.crypto.password.PasswordEncoder类访问发送用于身份验证的用户名。任何人都可以指导我如何做到这一点?或者还有其他方法吗?

注:我正在使用SpringSecurity 3.2。

spring spring-security
2个回答
1
投票

我甚至不在乎这是一个老问题,我只花了9个小时试图解决这个问题。不妨把它留在这里以防万一其他人再次偶然发现这件事。

String username = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest().getParameter("username");

使用上面的代码,我能够从当前请求中提取用户名。

注意:您必须使用以下课程org.springframework.web.context.request.RequestContextHolder

有一个类似的做错了我。


0
投票

假设User Entered UserName,UserPassword是User,Pwd。要进行身份验证,您可以执行以下操作。

  1. 获取用户输入的用户名和密码(用户,密码)。
  2. 使用String encodedPassword=passwordEncoder.encode(pwd);对密码进行编码
  3. 比较UserEnteredUserName = DBUserNAme和UserEnteredEncodedPassword == EncodedPasswordInDB,根据匹配值,您可以对用户进行身份验证。
© www.soinside.com 2019 - 2024. All rights reserved.