我是骨干新手,我想使用骨干路由器实现一个非常简单的身份验证。
我实际上只在我的应用程序中使用骨干路由器。当我启动应用程序时,我呈现一个登录视图,我也启动了骨干路由器(Backbone.history.start();)
如果登录成功,我呼叫router.navigate('mainmenu', { trigger: true, replace: false });
导航到我渲染主菜单的新路线,但是当我点击浏览器的后退按钮时,我会导航回登录视图。
在导航到上一个视图(登录视图)之前,我想询问用户是否要先注销,如果注销过程顺利,那么他会被重定向到登录视图。
我怎样才能实现这一目标?我检查了一些其他问题,但答案对我的用例来说太复杂了。我只是想阻止用户在他们登录后导航回特定的视图。
答案 0 :(得分:2)
@Dethariel感谢您的回答。我使用内置的Backbone路由器成功实现了某种会话。我从Backbone.Router执行方法backbone router execute snippet开始使用他们的小示例片段,并做了类似于下面的事情:
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);
}
});
这是非常小的,我认为这不是最好或最安全的方式,但对我来说这是一个很好的起点。
答案 1 :(得分:0)
您可以添加一个将处理登录页面的主干路由(如果您还没有这样做)。一旦这条路线被击中,你就会这样做(伪代码跟随):
if (user.isLoggedIn()) {
if (showLogoutPrompt().decision === "logout") {
user.logout();
}
}
希望这有帮助。