首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

PandaJS 使用说明(1.7):权限控制跟数据校验

2013-11-09 
PandaJS 使用说明(1.7):权限控制和数据校验PandaJS 使用说明(1.7):权限控制与数据校验  利用上一篇文章提

PandaJS 使用说明(1.7):权限控制和数据校验
PandaJS 使用说明(1.7):权限控制与数据校验
  利用上一篇文章提到的 proxy 对象,我们还可以实现权限控制和数据校验。
  权限控制的思路是截获对 page.* 和 api.* 的调用,并利用 session 中记录的用户角色信息进行权限检查;
  数据校验将重用校验代码,在客户端和服务器端对数据进行双重检查。

权限控制
  这里以对 page.* 的调用为例。基本思路是:
  1. 通过正则表达式 /^page./ 和 /^api./ 匹配需要拦截的方法调用
  2. 获取参数中的 req (ServletHttpRequest)
  3. 获取 session 中的用户角色
  4. 如果用户的角色是 admin ,则显示相应页面;否则显示登陆页面

$(function(){// 其他代码,略function save(action, user) {// 验证 user 数据有效性var validated = validator.validateUser(user);if (!validated.success) {$("#error").html(validated.error).show();return;}// 向服务器端发送请求var req = { action: action, params: validated.data };panda.post(req, show, function(error){$("#error").html(error).show();});}function show(users) { ... }});

  可以看到,检查输入是否为空和检查输入参数长度、格式的部分是共用的,但检查用户是否存在的逻辑只存在于服务器端的 proxy 对象。
  另外,proxy 对象的 func 中 的 this 表示的是被截获的对象,因此我们可以在 proxy.validation.saveUser 中调用 dbo.exists(name) 来检查用户是否已经存在。
  此外,还需要实现 dao.users.exists(name) 方法,并在 index.html 中添加对 webapp/js/both/validator.js 的引用,详细内容请查看附件中的相应文件。

小结
  1. 我们可以利用 proxy 对象拦截方法的调用,进行权限和数据的检查
  2. 我们可以将服务器和浏览器端共用的代码放在 both 目录下
  3. proxy 对象的 func 中 的 this 表示的是被截获的对象

热点排行