浏览 4443 次
锁定老帖子 主题:使用Nutz的json视图实现前台密码验证
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-20
使用Nutz的json视图实现前台密码验证
【阅读本文前提】
您了解Nutz框架(刚刚接触Nutz,对此还不熟悉),想要使用json视图; 您对jquery的ajax还不熟悉,想要使用此功能; 您使用了MD5加密了原始密码,或者其他方式加密了原始密码,在修改密码时候需要先把用户输入的原始密码传到后台,在进行加密,与数据库中的密码判断,如果相同,传回到页面。
【正文】
1.怎么在项目中使用Nutz框架,这里就不说了,具体可查看: http://code.google.com/p/nutz/wiki/nutz_preface?tm=6
2.前台修改密码部分
修改密码的页面的代码为(我使用了FreeMarker视图,但对功能实现不影响,您也可用其他视图):
<form name="theForm" action="" method="post"> <input type="hidden" name="personId" value="aa" /> <table width="95%" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6"> <tr bgcolor="#EFF3F7" class="TableBody1"> <td width="35%" height="37" align="right"><b>登录名:</b></td> <td height="37" align="left">${Session[config.session_user].loginName}</td> </tr> <tr bgcolor="#EFF3F7" class="TableBody1"> <td width="35%" height="37" align="right"><b>用户名:</b></td> <td height="37" align="left">${Session[config.session_user].userName}</td> </tr> <tr bgcolor="#EFF3F7" class="TableBody1"> <td width="35%" height="37" align="right"><b>原始密码:</b></td> <td height="37" align="left"> <input type="password" name="oldpassword" value="" /> </td> </tr> <tr bgcolor="#EFF3F7" class="TableBody1"> <td width="35%" height="37" align="right"><b>新密码:</b></td> <td height="37" align="left"> <input type="password" name="password" value="" /> </td> </tr> <tr bgcolor="#EFF3F7" class="TableBody1"> <td width="35%" height="37" align="right"><b>重复密码:</b></td> <td height="37" align="left"> <input type="password" name="repassword" value="" /> </td> </tr> <tr bgcolor="#EFF3F7" class="TableBody1"> <td width="35%" height="37" align="center"></td> <td height="37" align="left"> <input class="mya" type="button" value="确定" onclick="return validateForm();" /> <input class="mya" type="reset" value="重置" /> </td> </tr> </table> </form>
js代码(我直接写在了页面上):
<script type="text/javascript"> <!-- function validateForm(){ var oldpassword = theForm.oldpassword; var password = theForm.password; var repassword = theForm.repassword; var obj = false; 。。。。。。 $.ajax({ async:false, //使用同步请求,因为异步请求不能将返回值传给全局变量;这里很重要 url:"${base}/admin/validate.action", type:"post", dataType:"json", data:"oldPwd="+oldpassword.value, success:function(data){ // alert("ok:"+data); obj = data; } }); if(!obj){ alert("请输入正确的原始密码!"); oldpassword.value=""; oldpassword.focus(); return false; } 。。。。。。 //--> </script>
其中。。。。。。是略掉了其他代码,对此功能实现无影响。
到这里,解释下:
用户在页面上输入了原始密码,比如是:admin,在js代码里面使用了jquery的ajax进行与后台交互 其中的 async:false 这个设置很重要 URL地址就是在后台的一个子模块的一个入口函数(就像struts2里面的action)
3.后台部分
在相关的模块里面的相关入口函数validate的代码:
/** * 前台密码验证 * @return */ @At("/admin/validate") @Ok("json") public boolean validate(@Param("oldPwd")String oldPwd,HttpServletRequest req){ User user = (User)req.getSession().getAttribute(Constants.LOGIN_USER); boolean flag = MD5Util.checkMD5String(oldPwd, user.getPassword()); return flag; }
其中的@Ok("json")表示要返回json视图 其中的(@Param("oldPwd")String oldPwd表示接收前台传过来的值oldPwd 先从Session中取得登录用户的密码,在和传过来的oldPwd,使用MD5工具类进行比较,把比较结果传回前台。
解释到这里,我想大家应该明白了吧(有什么写的不好的地方,欢迎指教。)
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-02
呵呵,不错
|
|
返回顶楼 | |
发表时间:2011-05-03
如果想自己封装 JSON 的返回,不用默认的 @Ok("json") ,而自己写个新的视图类型,也会更方便,比如我自己就常用 @Ok("ajax") -- 一个我自己定制的视图
|
|
返回顶楼 | |
发表时间:2012-03-06
我靠,楼上两个跑得这么快的。。。
|
|
返回顶楼 | |