Javascript 将未经身份验证的用户重定向到ember中的登录屏幕的最简单方法
我现在开始使用Ember,并使用bootstrap的modal类创建了一个模式登录屏幕 我知道如何显示登录屏幕,我想将其与路由集成,以便在每次转换时检查用户的当前登录状态,如果用户未登录,则将其重定向到条目页面并弹出登录屏幕Javascript 将未经身份验证的用户重定向到ember中的登录屏幕的最简单方法,javascript,ember.js,Javascript,Ember.js,我现在开始使用Ember,并使用bootstrap的modal类创建了一个模式登录屏幕 我知道如何显示登录屏幕,我想将其与路由集成,以便在每次转换时检查用户的当前登录状态,如果用户未登录,则将其重定向到条目页面并弹出登录屏幕 我正在寻找横切此要求的最“不要重复自己”的方法,任何余烬专家可以帮助我吗?一种方法是为受保护的路由创建一条特殊路由(或通过重新打开覆盖余烬.route),为非受保护的路由创建一条公共路由。然后延伸这些路线 /*Ember.Route.reopen({*//*to globa
我正在寻找横切此要求的最“不要重复自己”的方法,任何余烬专家可以帮助我吗?一种方法是为受保护的路由创建一条特殊路由(或通过
重新打开覆盖余烬.route
),为非受保护的路由创建一条公共路由。然后延伸这些路线
/*Ember.Route.reopen({*//*to globally protect all routes*/
App.ProtectedRoute = Ember.Route.extend({
beforeModel: function() {
//if no promise used and isAuthenticated returns a boolean
// if (!isAuthenticated()) {
// this.transitionTo("login");
// }
//if promise used and isAuthenticated returns a promise
var self = this;
/*using the error part of then if error code is returned from server, otherwise the succes part could be used check the data value and decide the outcome*/
return isAuthenticated().then(null, function(data) {
self.transitionTo("login");
return Ember.RSVP.resolve(data);
});
}
});
/*to be used for views that do not require authentication*/
App.PublicRoute = Ember.Route.extend({
/*skip default Route's security check*/
beforeModel: function() {
}
});
一条受保护的路线是
App.FirstRoute = App.ProtectedRoute.extend();
App.SecondRoute = App.PublicRoute.extend();
公共路线是,
App.FirstRoute = App.ProtectedRoute.extend();
App.SecondRoute = App.PublicRoute.extend();
带有promise的已验证,可能类似于
function isAuthenticated(){
/*calling server to check if authenticated, if not authenticated server returns error code i.e. 500*/
return $.ajax({});
}
我将在哪里定义我的“isAuthenticated”函数?在一切之外?@thenaglecode通常我将这种代码放在特定的控制器(例如,App.AuthenticationController
)中,没有任何仅为业务逻辑关联的路由
或视图
,否则一个全局函数也就足够了。所以像计算属性一样?@thenaglecode实际上只是一个函数。下面是我描述的两个快速示例。第一个具有全局函数,可以放置在任何位置,例如在特定的库相关文件()中,第二个使用保存业务逻辑的ember
控制器,以便在需要时访问awesomeember
对象模型/功能()。我还建议查看ember简单身份验证。它非常易于使用,即使您不使用它,您也可以看到它们如何处理身份验证: