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

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 12:27 点击:

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

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

权限控制

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

Javascript代码 
(function() { 
    var log = panda.log("proxy.security"); 
 
    proxy.security = { priority: 80 }; 
 
    // 对 page.* 的调用进行权限控制 
    proxy.security.page = { 
        priority: 100, 
        expr: /^page./, 
        func: function(name, method, args) { 
            // 获取方法的第二个参数,即 req 
            var req = args[1]; 
 
            // 读取 session 中的role。返回值是 java.lang.String 
            // 加上空字符串转为 JavaScript 中的 String 
            var role = req.session.getAttribute("user.role") + ""; 
 
            // 如果角色是 "admin",则显示相应页面 
            // 否则,显示登录页面 
            if (role === "admin") { 
                return this[method].apply(this, args); 
            } else { 
                log.info("Redirect to login page."); 
                return panda.render("login"); 
            } 
        } 
    } 
 
    // 利用类似的方法对 api.* 的调用进行权限控制,略 
    proxy.security.api = { ... } 
}()); 


  简单起见,这里仅包含了 admin 一种角色。
  除此之外,还需要创建文件 webapp/login.html (登陆页面) webspp/js/login.js (向服务器发送用户名和密码的客户端 JS ) 和 scripts/api/auth.js(登录用户名和密码验证),具体内容请查看附件中的相应文件。

  启动 mongod 和 PandaJS 工程(见附件),输入http://localhost/,将显示登录页面,在控制台输出(或日志)中也可以看到“Redirect to login page.”的提示。
  输入用户名和密码并点击 Sign in 之后,将显示用户列表。

数据校验

  首先编写在服务器端和浏览器中共用的 validator 对象:

  webapp/js/both/validator.js
Javascript代码 
validator = {}; 
 
// 校验异常信息 
validator.USER_INVALID = "Invalid user data."; 
validator.USER_NAME_EMPTY = "Name cannot be empty."; 
validator.USER_NAME_TOO_LONG = "Name cannot be longer than 50."; 
validator.USER_NAME_FORMAT = "Name format is

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Gb2312转utf-8编码的方法(vbs+js)
      • 如何使用Ajax技术开发Web应用程序(1)
      • js跳转路径问题
      • JavaScript模仿桌面窗口
      • 用js检测两个线段是否相交
      • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
      • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
      • 我是如何去了解jquery的(六),案例之幻灯片轮换
      • Jquery封装幻灯片效果
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1