Ember.js ember simple auth:使用自定义验证器在本地存储中持久化会话
设置:Ember.js ember simple auth:使用自定义验证器在本地存储中持久化会话,ember.js,ember-cli,ember-simple-auth,Ember.js,Ember Cli,Ember Simple Auth,设置: 余烬:2.0.2 余烬数据:2.0.1 jQuery:1.11.3 余烬简单授权:1.0.0(jjAbrams分支) 余烬CLI:1.13.8 我用伪装者来模拟服务器 用例: 使用自定义身份验证程序与服务器交互 有2个路由:登录、受保护(默认情况下还有索引、应用程序) 当我使用正确的凭据登录时,将调用验证器的authenticate方法并成功记录传递给resolve()的响应对象 意见: 登录并被定向到受保护页面后,刷新受保护路由(具有AuthenticatedRouteMixin)
- 余烬:2.0.2
- 余烬数据:2.0.1
- jQuery:1.11.3
- 余烬简单授权:1.0.0(jjAbrams分支)
- 余烬CLI:1.13.8
AuthenticatedRouteMixin
)将返回登录页面登录前:
ember\u simple\u auth:session->{“authenticated”:{}
restore()
从未调用验证器的方法//验证器/custom.js
从“余烬”导入余烬;
从“ember simple auth/authenticators/Base”导入Base;
导出默认的Base.extend({
恢复:功能(数据){
返回新的Ember.RSVP.Promise(函数(解析、拒绝){
console.log(“解析”,数据);
如果(!Ember.isEmpty(data.token)){
//TODO删除日志
解析(数据);
}否则{
控制台日志(“拒绝”,数据);
拒绝();
}
});
},
验证(凭据){
返回新的余烬回复承诺((解决、拒绝)=>
余烬$.ajax({
url:“/token”,
键入:“POST”,
数据:JSON.stringify({
电子邮件:凭证。身份证明,
密码:credentials.password
}),
contentType:'application/json;charset=utf-8',
数据类型:“json”
}).然后(功能(响应){
Ember.run(函数(){
//这将记录预期的信息
日志(“Response”,Response,Response.token,Response.user);
决心(回应);
});
},函数(xhr,状态,错误){
log(“error”,error,xhr.responseText);
var response=xhr.responseText;
Ember.run(函数(){
拒绝(回应);
});
}));
},
使无效(令牌){
返回API.logout(令牌);
}
});代码>我终于把这一切都安排好了。Ember 2.0和ESA 1.0
以下是我采取的步骤:
创建新的ember cli项目
在bower.json中将余烬和余烬数据值更新为^2.0.0
将ESA jjAbrams dep添加到package.json
运行npm安装和bower安装
Gotchas:(这是问题中所述问题的根源)
如果您是从旧版本的ESA升级,则所有对“simple auth/”的引用都应更新为引用“ember simple auth/”。。
.. 这包括身份验证程序、授权程序、存储、混合和Config/environment.js文件中的配置键的导入
一旦ESA 1.0和Ember 2.0版的Ember Cli面世,所有这些都不应该成为问题:)您实际使用的是jj abrams
分支机构最近提交的吗?大概。。我从bower.json和package.json中清除了旧的ESA dep,添加了jjAbrams dep,并按指定运行了npm和bower安装..登录后和重新加载前本地存储的内容是什么?ember_simple_auth:session->{“secure”:{}(重新加载前)。我从头开始了一个新项目,一次从旧文件中提取每个文件。现在似乎工作正常(除了session.invalidate()抛出一些未知错误,但这是另一个问题)。。。