适用于Javascript函数的App范围的身份验证处理程序

时间:2012-06-15 05:22:12

标签: javascript backbone.js

在页面上的一堆Javascript操作上处理身份验证的最佳方法是什么,而不会使用“if authenticated()”检查来乱丢代码库?

例如:我们有10个像按钮,一些注释按钮和一些其他需要身份验证的操作。未对用户进行身份验证时,我们希望将其重定向到登录/注册页面。但是,我们希望避免使用if(user.isAuthenticated()){xxx}调用来乱丢代码。在我们的特定情况下,我们希望将这些主要用于主干中的事件,尽管我认为这对于一般性问题并不重要。

2 个答案:

答案 0 :(得分:1)

在underscorejs的帮助下。你可以这样写:

function authWrapper(func){
    if (user.isAuthenticated()) {
     func.apply(this, _.rest(arguments));
    }else{
       ...
    }
}

假设您正在使用jQuery,在绑定事件时,请写下:

$(...).bind('event', _.wrap(function(...){...}, authWrapper));

$(...).bind('event', _.wrap(thehandler, authWrapper));

答案 1 :(得分:0)

创建一个执行检查的方法,如果身份验证正常,应该调用该方法的回调怎么样?类似的东西:

function checkNdRun(cb,params){
  params = [].slice.call(params);
  if (/*[authenticationCheckingLogic here]*/){
    cb.apply(null,params);
  } else {
    alert('please login first');
  }
}
//usage example
somebutton.onclick = 
     function(e){checkNdRun(functionToRun,e,/*[other parameters]*/);};