在PasswordEncoder中获取用户名

时间:2014-04-11 08:14:01

标签: spring spring-security

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

N.B。我正在使用 SpringSecurity 3.2。

2 个答案:

答案 0 :(得分:1)

我什至都不在乎这是一个老问题,我花了9个小时试图弄清楚这个问题。最好把它留在这里,以防其他人再次发现它。

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

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

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

有一个类似的地方让我做错了。

答案 1 :(得分:0)

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

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