1
我使用的餘燼,簡單身份驗證1.1.0與Cookie身份驗證無效會話和我創建了功能(恢復,驗證和無效),並自定義驗證器的初始化一個自定義的認證。
我綁定在ajaxError事件,所以我們可以捕捉任何錯誤。例如訪問服務器響應401未授權的路由。我想使會話無效並將用戶重定向回登錄頁面。Emberjs:如何在自定義驗證初始化
目前我不能得到餘燼,簡單身份驗證默認情況下會在初始化,所以我可以作廢了會議。我沒有爲我的應用程序創建任何自定義會話。
這樣做的最好方法是什麼?
如果是不可能的,是能夠更好地在初始化觸發事件,趕上在路由事件?我們如何做到這一點?
我的自定義初始化的樣子:
import BasicAuthenticator from '../authenticators/basic';
export default {
before: 'ember-simple-auth',
name: 'basic-authenticator',
initialize(application) {
application.register('authenticator:basic', BasicAuthenticator);
Ember.$(document).ajaxError((event, jqxhr, settings, reason) => {
if (jqxhr.status === 401) {
}
});
}
};
我的自定義驗證器:
import Ember from 'ember';
import Base from 'ember-simple-auth/authenticators/base';
export default Base.extend({
restore() {
return new Ember.RSVP.Promise(function(resolve, reject) {
let sessionCookie = window.Cookies.get('beaker.session.id');
if(!window.isUndefined(sessionCookie)) {
resolve(true);
}else{
reject();
}
});
},
authenticate(data) {
return new Ember.RSVP.Promise(function (resolve, reject) {
Ember.$.ajax({
type: 'post',
url: '/core/authentication/basic/login',
data: data
}).then((response) => {
resolve({
responseText: response
});
}, (error) => {
reject(error);
});
});
},
invalidate() {
return new Ember.RSVP.Promise(function (resolve, reject) {
Ember.$.ajax({
type: 'post',
url: '/core/authentication/basic/logout'
}).then(() => {
resolve(true);
},() => {
reject();
});
});
}
});