2014-09-05 62 views
2

我正在實現一個自定義授權者和身份驗證器,以使用ember-simple-auth庫執行HMAC令牌簽名,並且每個作品單獨運行良好,但一起破解。如何選擇性地禁用ember-simple-auth授權人?

如果我禁用授權者,認證者可以啓動會話就好了,一旦有現有會話,授權者就會正確授權所有對api的請求,但是當兩者都在玩時,授權者會破壞初始登錄請求。

有沒有辦法跳過授權人的身份驗證請求,或者也許暫時禁用ajaxPrefilter修改請求?還是有更好的方法來解決這個問題?

認證:

var CustomAuthenticator = Base.extend({ 
    authenticate: function(credentials) { 
    var data = { 
     user: { 
     email: credentials.identification, 
     password: credentials.password 
     } 
    }; 

    return Ember.$.post(MyApplicationENV.API_URL + '/users/login', data).then(function(response, statusText, xhr) { 
    if (xhr.status === 201) { 
     return response; 
    } 
    }).fail(function() { 
    console.warn('login FAILED!'); 
    }); 
},... 

授權:

var CustomAuthorizer = Base.extend({ 
    authorize: function(jqXHR, requestOptions) { 
    var timestamp = parseInt((new Date().getTime()/1000), 10); 
    var hashedToken = window.md5(timestamp + ':' + this.get('session.authentication_token')); 
    var data = 'user_token=' + hashedToken; 
    data += '&user_email=' + this.get('session.email'); 
    data += '&timestamp=' + timestamp; 
    requestOptions.data = data; 
    } 
}); 

回答

2

您應該檢查session.get( 'isAuthenticated')的授權,如果這是真的只有授權的請求。這樣它就不會授權初始登錄請求。