首先,我将以不同的方式解决你的问题。我会进行多步骤身份验证。第一个是使用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
希望这可以帮助。