问题描述
流程是这样的: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
解决方案二:
推荐看看李刚的 struts2权威指南。那本书里有关于验证码的解决方法。
时间: 2024-09-07 10:53:59