处理页面上一堆 Javascript 操作的身份验证而不用“if authenticated()”检查乱扔代码库的最佳方法是什么?
例如:我们有 10 个赞按钮、一些评论按钮和一些其他需要身份验证的操作。当用户未通过身份验证时,我们希望将他们重定向到登录/注册页面。但是,我们希望避免在 if (user.isAuthenticated()) { xxx } 调用中乱扔代码。在我们的特定情况下,我们希望将这些主要用于主干中的事件,尽管我认为这对于一般问题并不重要。
处理页面上一堆 Javascript 操作的身份验证而不用“if authenticated()”检查乱扔代码库的最佳方法是什么?
例如:我们有 10 个赞按钮、一些评论按钮和一些其他需要身份验证的操作。当用户未通过身份验证时,我们希望将他们重定向到登录/注册页面。但是,我们希望避免在 if (user.isAuthenticated()) { xxx } 调用中乱扔代码。在我们的特定情况下,我们希望将这些主要用于主干中的事件,尽管我认为这对于一般问题并不重要。
在 underscorejs 的帮助下。你可以这样写:
function authWrapper(func){
if (user.isAuthenticated()) {
func.apply(this, _.rest(arguments));
}else{
...
}
}
假设你使用 jQuery,在绑定事件时,这样写:
$(...).bind('event', _.wrap(function(...){...}, authWrapper));
或者
$(...).bind('event', _.wrap(thehandler, authWrapper));
如何创建一个进行检查的方法,如果身份验证正常,则使用回调来调用应该调用的方法?就像是:
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]*/);};