设定:
我正在使用pretender来模拟服务器。
USECASE:
使用自定义身份验证器与服务器连接。
有2条路线:登录,受保护(默认为索引,应用程序)
当我使用正确的凭据登录时,将调用身份验证器的身份验证方法并成功记录传递给resolve()的响应对象。
观察:
登录并定向到受保护的页面后,刷新受保护的路由(其中包含AuthenticatedRouteMixin
)会返回登录页面。
即使成功登录,Localstorage也没有绑定到它的值。
登录前:ember_simple_auth:session -> {"authenticated":{}}
restore()
验证者的方法从未被调用过。
在auth之后从受保护路线前往另一条路线并再次返回登录页面。
//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; 如何使会话保持不变?
答案 0 :(得分:0)
我最后一起工作了。 Ember 2.0和ESA 1.0
以下是我采取的步骤:
陷阱:(这是导致问题中描述的问题的原始问题)
一旦ESA 1.0和Ember Cli for Ember 2.0问世,这一切都不应成为问题:)