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

App-wide authentication handler for Javascript functions?

本文关键字:身份验证 处理 程序 范围 应用程序 Javascript 函数 适用于      更新时间:2023-09-26

处理页面上一堆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]*/);};