2017-10-14 4 views
1

Ich möchte einen Benutzer zu /login umleiten, wenn sie eine 403 von meiner API erhalten. Hier ist, was ich habe in meinem /app/routes/application.js:Handhabung einer 403 in Ember.js

import Ember from 'ember'; 
import ApplicationRouteMixin from 'ember-simple-auth-auth0/mixins/application-route-mixin'; 

export default Ember.Route.extend(ApplicationRouteMixin, { 
    actions: { 
    error(error, transition) { 
     if (error.status === '403') { 
     this.replaceWith('login'); 
     } else { 
     return true; 
     } 
    } 
    } 
}); 

Aber dies scheint nicht gut mit Ember Daten zu arbeiten, und wenn ein 403 zurückgeführt wird, wird die Ausnahme ausgelöst, aber nicht durch den Router abgewickelt, alle Tipps ?

Antwort

1

Sie können Ihren Ember Data-Anwendungsadapter außer Kraft setzen, um 403s zu fangen. Dinge zu tun, dann können Sie Dinge handhaben, um eine Umleitung wie gewünscht auszulösen:

// app/adapters/application.js 

import DS from 'ember-data'; 

export default DS.JSONAPIAdapter.extend({ 
    handleResponse(status, headers, payload, requestData) { 
    if(status === 403) { 
     // throw an error to be caught at the app level 
     // or work with a service to handle things as desired 
    } 

    return this._super(status, headers, payload, requestData); 
    } 
}); 
+0

Können Sie mir ein Beispiel dafür zeigen? Ich bin mir nicht sicher ob ich das verstehe. –

+0

Sicher, gerade aktualisiert. Dies sollte damit umgehen, was Sie suchen. – acorncom