javascript - 是否可以一次转义多条路由中的所有参数?
问题描述
我有一个有多个路由的路由器。目前,我正在转义方法本身中单独传递给方法的每个参数。
出于安全目的,我需要转义 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
是否可以一次转义所有路由中的所有参数,以便我不必在每个相应的方法中显式转义它们?
解决方案
您可以覆盖execute
execute
router.execute(callback, args, name)
这个方法在路由器内部被调用,只要一个路由匹配并且它对应的回调即将被执行。从执行返回 false 以取消当前转换。覆盖它以执行自定义解析或路由包装,例如,在将查询字符串交给路由回调之前解析查询字符串,如下所示: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); } });
推荐阅读
- reactjs - React-Native 使用 React Hooks 使 setInterval 声明性
- sql - SQL Server 完整外部组未获取所有值
- excel - 将带有循环的类型声明为变量
- mongodb - 忽略 MongoDB 中聚合操作中的 NULL 值
- regex - 字符串到数组或哈希表
- python - 检测图像中线的起点和终点(numpy数组)
- java - 如果子类中未定义父构造函数,子类是否使用父构造函数?
- javascript - TinyMCE 5 color_map 设置不显示自定义颜色
- javascript - angularjs中基于条件的显示数据
- user-interface - 新语言 Xamarin 后刷新 UI