在页面上的一堆Javascript操作上处理身份验证的最佳方法是什么,而不会使用“if authenticated()”检查来乱丢代码库?
例如:我们有10个像按钮,一些注释按钮和一些其他需要身份验证的操作。未对用户进行身份验证时,我们希望将其重定向到登录/注册页面。但是,我们希望避免使用if(user.isAuthenticated()){xxx}调用来乱丢代码。在我们的特定情况下,我们希望将这些主要用于主干中的事件,尽管我认为这对于一般性问题并不重要。
答案 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]*/);};