backbone 路由器如何隐藏参数 url
backbone router how to hide parameters from url
我正在使用 backbone 路由器重定向到我的页面,例如我有这个 url
http://localhost:56508/#/RegistryMain/44/1234
密码
RegistryMain: function (id, cnt) {
var self = this;
this.load();
require([
'js/views/Questionaire/RegistryMain'
], function (RegistryMainView) {
self.shell();
if (typeof app.RegistryMainView !== 'undefined') {
app.RegistryMainView.destroy();
}
app.RegistryMainView = new RegistryMainView({ Id: id, cnt: cnt });
$("#main-nav li.active").removeClass("active");
$("#admin").addClass("active");
});
},
出于安全原因,我需要从 url 中隐藏 /44/1234
,这样用户就无法重复使用它们或将它们更改为 /45/1234
并访问禁止访问的页面。
我如何在 backbone 中执行此操作?
如果我应该使用 POST 方法,如何在 backbone 中使用它?
说得对,您正试图在错误的地方处理安全问题。您根本不能信任客户端代码。
每次前端应用程序调用 API 端点时,您应该从服务器检查用户的权限,以避免您的用户导航到他们无权查看的页面,或者避免他们通过向端点发布无效内容来扰乱数据。
您的 API 应该 return 一个 401 unauthorized
HTTP 响应代码来通知您的前端应用程序这种情况。
为了平滑的页面转换,如果 API 调用失败,将用户重定向到错误页面。
话虽这么说
为了避免显示url,可以直接调用loadUrl
:
// current url: http://localhost:56508/#/RegistryMain
Backbone.history.loadUrl("RegistryMain/44/1234");
// current url: http://localhost:56508/#/RegistryMain
这将在不更改 url 的情况下触发路由回调,因此用户 永远不会 看到参数。
Now that I use .loadUrl
in my project, all pages have the same URL, but when I refresh a page, it redirects to the login page (the first
page in my project). How to make it refresh the current page?
这是不使用 url 触发路由的缺点,您现在无法知道应用程序的状态,因为单页应用程序仅存在于当前页面中,刷新会完全启动一个新实例.
如果不使用 url 是正确的选择,您真的应该重新考虑。如果仍然存在,您可以将当前 url 保存在 localStorage 中,并在应用程序启动时使用它来重定向到正确的页面。
我正在使用 backbone 路由器重定向到我的页面,例如我有这个 url
http://localhost:56508/#/RegistryMain/44/1234
密码
RegistryMain: function (id, cnt) {
var self = this;
this.load();
require([
'js/views/Questionaire/RegistryMain'
], function (RegistryMainView) {
self.shell();
if (typeof app.RegistryMainView !== 'undefined') {
app.RegistryMainView.destroy();
}
app.RegistryMainView = new RegistryMainView({ Id: id, cnt: cnt });
$("#main-nav li.active").removeClass("active");
$("#admin").addClass("active");
});
},
出于安全原因,我需要从 url 中隐藏 /44/1234
,这样用户就无法重复使用它们或将它们更改为 /45/1234
并访问禁止访问的页面。
我如何在 backbone 中执行此操作?
如果我应该使用 POST 方法,如何在 backbone 中使用它?
每次前端应用程序调用 API 端点时,您应该从服务器检查用户的权限,以避免您的用户导航到他们无权查看的页面,或者避免他们通过向端点发布无效内容来扰乱数据。
您的 API 应该 return 一个 401 unauthorized
HTTP 响应代码来通知您的前端应用程序这种情况。
为了平滑的页面转换,如果 API 调用失败,将用户重定向到错误页面。
话虽这么说
为了避免显示url,可以直接调用loadUrl
:
// current url: http://localhost:56508/#/RegistryMain
Backbone.history.loadUrl("RegistryMain/44/1234");
// current url: http://localhost:56508/#/RegistryMain
这将在不更改 url 的情况下触发路由回调,因此用户 永远不会 看到参数。
Now that I use
.loadUrl
in my project, all pages have the same URL, but when I refresh a page, it redirects to the login page (the first page in my project). How to make it refresh the current page?
这是不使用 url 触发路由的缺点,您现在无法知道应用程序的状态,因为单页应用程序仅存在于当前页面中,刷新会完全启动一个新实例.
如果不使用 url 是正确的选择,您真的应该重新考虑。如果仍然存在,您可以将当前 url 保存在 localStorage 中,并在应用程序启动时使用它来重定向到正确的页面。