首先,我将以不同的方式解决您的问题。我会进行多步骤身份验证。第一个是使用spring security的默认模型的传统用户名/密码登录。第二步是显示另一个表单,用户必须填写该表单以提供身份验证的其他详细信息,您的应用程序希望执行此操作。
无论如何,如果您想继续自定义spring安全模型,以单步询问登录的更多详细信息。请遵循@Petr中上一个答案中的步骤参考。然后要访问您的UserDetailsS??ervice类中的会话属性,请使用Spring提供的http://static.springsource.org/spring/docs/2.0.8/api/org/springframework/web/context/request/RequestContextHolder.html类。
您可以访问currentRequestAttributes()
,返回一个RequestAttributes
对象。您可以查询RequestAttributes对象,以从所需范围中获取所需属性。
注意:这是静态方法,这意味着它对单元测试不友好。
您还可以将RequestAttributes转换为ServletRequestAttributes
是否要访问基础HttpServletRequest
希望这可以帮助。