[size=medium][b]问题背景:
项目需要引入一个密码控件,该密码控件计算密文值需要一串随机数,在获取密文值时使用(由开发者调用控件相关方法)。
问题说明:
首先我的做法如下:
1、js初始化控件基本信息。
2、window.onload方法中通过ajax调用后端服务获取随机数,获取成功后给控件设置随机数(用于加密密码)。
3、用户点击提交按钮时调用控件加密方法来获取密文。
问题表现如下:
1、无论我怎么设置随机数,控件加密出来结果总是同一个值,而且后台反解再进行md5处理得到的结果也跟原生的md5值不同。
2、而另外一个同事给出的demo得到的值确实正确的。
最终咨询了一个同事,经过各种调试,最终给出了建议,js是脚本语言,逐行执行,而设置随机数前还调用了几个方法,最终研究源码发现,是前几个方法未执行完就进行设置随机数其实是无效,因为设置了也会被空值覆盖掉,至此,发现了问题原因所在。
所以,js脚本语言的特性再次警醒了我(因为很久没用了的缘故),也希望这篇博文能帮助到遇到类似问题的同行。
[/b][/size]
项目需要引入一个密码控件,该密码控件计算密文值需要一串随机数,在获取密文值时使用(由开发者调用控件相关方法)。
问题说明:
首先我的做法如下:
1、js初始化控件基本信息。
2、window.onload方法中通过ajax调用后端服务获取随机数,获取成功后给控件设置随机数(用于加密密码)。
3、用户点击提交按钮时调用控件加密方法来获取密文。
问题表现如下:
1、无论我怎么设置随机数,控件加密出来结果总是同一个值,而且后台反解再进行md5处理得到的结果也跟原生的md5值不同。
2、而另外一个同事给出的demo得到的值确实正确的。
最终咨询了一个同事,经过各种调试,最终给出了建议,js是脚本语言,逐行执行,而设置随机数前还调用了几个方法,最终研究源码发现,是前几个方法未执行完就进行设置随机数其实是无效,因为设置了也会被空值覆盖掉,至此,发现了问题原因所在。
所以,js脚本语言的特性再次警醒了我(因为很久没用了的缘故),也希望这篇博文能帮助到遇到类似问题的同行。
[/b][/size]