1

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

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

4

2 回答 2

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));
于 2012-06-15T05:41:38.653 回答
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]*/);};
于 2012-06-15T05:44:58.243 回答