流程是这样的:
1,登录表单里加入了验证码,并把验证码存入session。
2,表单提交时用js对 password+验证码 进行md5加密
3,spring security开始认证,从数据库获取userDetails(数据库里密码为明文)
这样前台是 md5(密码+验证码),后台也需要是这种形式
问题是,我如何把session中的验证码绑定到userDetails中的password上?不知道在获取userDetails时,在什么地方能从session中取值?
流程是这样的:
1,登录表单里加入了验证码,并把验证码存入session。
2,表单提交时用js对 password+验证码 进行md5加密
3,spring security开始认证,从数据库获取userDetails(数据库里密码为明文)
这样前台是 md5(密码+验证码),后台也需要是这种形式
问题是,我如何把session中的验证码绑定到userDetails中的password上?不知道在获取userDetails时,在什么地方能从session中取值?
楼上书托!
你的需求有问题,验证码+pwd加密以后提交到后台,后台无法获得验证码的原始值。除非把验证码以明码的方式提交到后台。另外,用js加密本身就是极其不安全的。验证码的使用建议参考springside-1.0或者2.0(2.0不知有没有),不过它用的是acegi,如果你们用spring security还得自己改。
如果一定要按照你的思路走,可以尝试:
UserDetails是一个pojo,无法直接获得session,验证码也不应该存在session中,应该放在request里面。这个验证的工作应该在UserDetailsService中进行。
土一点的办法是吧验证码从request中取出,放在ThreadLocal中,然后在UserDetailsService中bind userdetails