余烬客户端身份验证,路由身份验证
Ember Client Side Authentication, route authentication
我一直在谷歌上搜索这个问题,但一直无法找到你能说的满意的答案或解决方案。
我有这个余烬应用程序,http://jsbin.com/aHiVIwU/28#。
我的用例非常简单。我想仅在用户通过身份验证后向用户显示整个应用程序。如您所见,我没有使用Ember Data,因此身份验证也将通过$.ajax
进行。
如果我没记错的话,我会有一个这样的登录页面模板,
<script type="text/x-handlebars" id="login">
<h1>Login</h1>
{{view Ember.TextField valueBinding="username"}}
{{view Ember.TextField type="password" valueBinding="password"}}
<button {{action 'login' class="btn"}}>Login</button>
</script>
然后我会映射资源,
App.Router.map(function() {
this.resource( 'login');
});
然后会有相应的控制器吧?
App.LoginController = Ember.ObjectController.extend({
});
但是我陷入困境的一点是,在用户进行身份验证后,我将如何首先仅显示登录模板,然后再显示整个应用程序?我将不胜感激对此的一些解释和帮助。
我不能说它比 Alex 在他的拉取请求中如何谈论它更好,路由器整容在余烬中。 向下看大约四分之一,对于"如何重定向到经过身份验证的路由的登录表单并稍后重试原始转换?
https://gist.github.com/machty/5647589
实质上,在需要对用户进行身份验证的资源的根路由中,您将保存当前转换,转换为登录路由,然后在他们进行身份验证后,重新启动上一个转换。
他包括了一个非常简单的例子,他创建了一个 mixin,可以附加到所有需要身份验证的路由上,而您不必复制代码等。
http://jsbin.com/axarop/54/edit
App.NeedsAuthMixin = Ember.Mixin.create({
beforeModel: function(transition) {
// We're using beforeModel here to
// make sure the user is authenticated.
var loginController = this.controllerFor('login');
if (!loginController.get('hasLoggedIn')) {
alert('you must log in!');
loginController.set('afterLoginTransition', transition);
this.transitionTo('login');
}
}
});
App.ArticlesRoute = Ember.Route.extend(App.NeedsAuthMixin);
App.LoginRoute = Ember.Route.extend({
events: {
login: function () {
this.controller.set('hasLoggedIn', true);
var savedTransition = this.controller.get('afterLoginTransition');
if (savedTransition) {
this.controller.set('afterLoginTransition', null);
savedTransition.retry();
}
}
}
});
查看 http://www.embercasts.com/上的客户端身份验证屏幕投射。他们来自制作 kingpin2k 引用的示例的同一个人,但提供了一个完整的、有效的解决方案。
相关文章:
- Sencha Touch和远程服务器上的身份验证
- Javascript清除缓存以清除基本身份验证凭据
- REST的面向公众的身份验证机制
- 当需要身份验证时,ui路由器不会重定向
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;
- AJAX HTTP基本身份验证解决方案
- 具有路由限制的AngularFire身份验证
- AngularJS:转发到登录页面进行身份验证,保留路由作为GET参数
- 使用基于令牌的身份验证保护Sails.js中的API路由
- 余烬客户端身份验证,路由身份验证
- 禁用特定路由上特定谓词的身份验证中间件
- ng令牌身份验证和路由权限
- Angularjs在使用身份验证时路由不稳定
- 对passportjs+Node.js+Express.js Rest API调用成功身份验证和失败的路由处理程序
- 如果未通过身份验证,则在所有路由上重定向到登录
- 角度身份验证:避免对不同路由进行多重解析
- 默认情况下,如何制作Express路由需要身份验证
- 路由更改上的微调器加载从身份验证库开始
- 如何在节点 + Express 应用中设置路由以传递身份验证方法
- Angular2路由可以使用用户角色参数激活和身份验证(JWT)