设置:
我正在使用伪装者来模拟服务器。
用例:
使用自定义身份验证器与服务器接口。
有2条路由:登录,受保护(默认情况下为应用程序索引)
当我使用正确的凭据登录时,将调用身份验证器的authenticate方法,并成功记录传递到resolve()的响应对象。
观察结果:
登录并定向到受保护的页面后,刷新受保护的路由(具有AuthenticatedRouteMixin
)将返回登录页面。
即使成功登录,Localstorage也没有绑定任何值。登录前:ember_simple_auth:session -> {"authenticated":{}}
restore()
身份验证器的方法从未调用过。
验证后从受保护的路由转到另一条路由,然后再次进入登录页面。
//authenticators/custom.js
import Ember from 'ember';
import Base from 'ember-simple-auth/authenticators/base';
export default Base.extend({
restore: function (data) {
return new Ember.RSVP.Promise(function (resolve, reject) {
console.log("RESOLVE",data);
if (!Ember.isEmpty(data.token)) {
//TODO Remove log
resolve(data);
} else {
console.log("REJECTING",data);
reject();
}
});
},
authenticate(credentials) {
return new Ember.RSVP.Promise((resolve, reject) =>
Ember.$.ajax({
url: '/token',
type: 'POST',
data: JSON.stringify({
email: credentials.identification,
password: credentials.password
}),
contentType: 'application/json;charset=utf-8',
dataType: 'json'
}).then(function (response) {
Ember.run(function () {
//This logs the expected information
console.log("Response", response, response.token, response.user);
resolve(response);
});
}, function (xhr, status, error) {
console.log("error", error, xhr.responseText);
var response = xhr.responseText;
Ember.run(function () {
reject(response);
});
}));
},
invalidate(token) {
return API.logout(token);
}
});
//environment.js
ENV['ember-simple-auth'] = {
store: 'session-store:local-storage',
routeAfterAuthentication: '/protected'
};
TLDR;如何使会话持续进行?
我终于一起工作了。Ember 2.0和ESA 1.0
这是我采取的步骤:
陷阱:(这是导致问题中描述的问题的原始问题)
一旦ESA 1.0和Ember Cli for Ember 2.0出现,所有这些都不应该成为问题:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句