backbone.js 是否可以一次转义多个路由中的所有参数?

nxowjjhe  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(124)

我有一个路由器,它有多个路由。目前,我正在转义每个参数分别传递给方法本身的方法。
为了安全起见,我需要对URL中传递的所有参数进行转义。

class MyRouter extends Backbone.Router
   routes:
     "student/:id/:name"         :        "student"
     "teacher/:tid/:tname"       :        "teacher"
     "teacher/:tid/:tname/share" :        "teacher_share"

  student: (id, name) ->
    id = _.escape(id)
    name = _.escape(name)
    #do stuff

  teacher: (tid, tname) ->
    tid = _.escape(tid)
    tname = _.escape(tname)
    #do stuff

  teacher_share: (tid, tname) ->
    tid = _.escape(tid)
    tname = _.escape(tname)
    #do stuff

有没有可能一次转义所有路径中的所有参数,这样我就不必在每个相应的方法中显式地转义它们?

wb1gzix0

wb1gzix01#

您可以覆盖execute

executerouter.execute(callback, args, name)每当路由匹配并且其相应的回调即将执行时,该方法在路由器内部被调用。从execute返回false以取消当前转换。覆盖该方法以执行路由的自定义解析或 Package ,例如,在将查询字符串传递给路由回调之前解析查询字符串,如下所示:

var Router = Backbone.Router.extend({
  execute: function(callback, args, name) {
    if (!loggedIn) {
      goToLogin();
      return false;
    }
    args.push(parseQueryString(args.pop()));
    if (callback) callback.apply(this, args);
  }
});

相关问题