Javascript 防止用户使用主干导航回特定路由
我是主干网新手,我想用主干网路由器实现一个非常简单的身份验证 在我的应用程序中,我实际上只使用主干网路由器。当我启动应用程序时,我会呈现一个登录视图,并初始化主干路由器(backbone.history.start();) 如果登录成功,我调用Javascript 防止用户使用主干导航回特定路由,javascript,backbone.js,routes,Javascript,Backbone.js,Routes,我是主干网新手,我想用主干网路由器实现一个非常简单的身份验证 在我的应用程序中,我实际上只使用主干网路由器。当我启动应用程序时,我会呈现一个登录视图,并初始化主干路由器(backbone.history.start();) 如果登录成功,我调用router.navigate('main menu',{trigger:true,replace:false})导航到一个新的路由,在那里我呈现主菜单,但当我单击浏览器的后退按钮时,我导航回登录视图 在导航到前一个视图(login视图)之前,我想询问用户
router.navigate('main menu',{trigger:true,replace:false})
导航到一个新的路由,在那里我呈现主菜单,但当我单击浏览器的后退按钮时,我导航回登录视图
在导航到前一个视图(login视图)之前,我想询问用户是否希望首先注销,如果注销过程顺利,那么他将被重定向到login视图
我怎样才能做到这一点?我检查了几个其他问题,但答案对于我的用例来说太复杂了。我只是想防止用户在登录后导航回特定视图。您可以添加一个主干路由来处理登录页面(如果您还没有这样做的话)。一旦点击了该路线,您就可以这样做(伪代码如下所示):
希望这有帮助。@Dethariel谢谢你的回答。我使用内置的主干路由器成功地实现了某种会话。我从主干.Router execute方法的小示例片段开始,做了一些类似于下面的事情:
var Router = Backbone.Router.extend({
// define routes and calkbacks
// ....
// define routes and calkbacks
execute: function(callback, args) {
// execute will be called before the callback for each specific route
// get the next route in here
var nextRoute = Backbone.history.fragment;
if(user.LoggedIn()){
// check if nextRoute is '#login*'. I could make other checks as well
if(nextRoute.indexOf('login')>-1)
prompt('Log out?');
// else continue routing
else if (callback) callback.apply(this, args);
}
else if (callback) callback.apply(this, args);
}
});
这是非常小的,我不认为这是最好或安全的方式,但这对我来说是一个很好的起点
var Router = Backbone.Router.extend({
// define routes and calkbacks
// ....
// define routes and calkbacks
execute: function(callback, args) {
// execute will be called before the callback for each specific route
// get the next route in here
var nextRoute = Backbone.history.fragment;
if(user.LoggedIn()){
// check if nextRoute is '#login*'. I could make other checks as well
if(nextRoute.indexOf('login')>-1)
prompt('Log out?');
// else continue routing
else if (callback) callback.apply(this, args);
}
else if (callback) callback.apply(this, args);
}
});