2014-07-25 4 views
5

Ich habe ein Projekt läuft und ich habe die Server-Seite verwendet, um meine Authentifizierung und Autorisierung durch Express/Passport-Domain-Cookies, die Art von Auto magisch mit dem Staat umgehen, indem du den Sid Cookie hin und her schickst.kann ich ember-simple-auth mit Express/Pass Session Domain Cookies verwenden

Ich hatte nicht viel von einem Auth-Management auf dem Client gebaut, ich habe nur die Benutzerdaten erhalten, die für mich in der Serveransicht als globales js-Objekt bootstrap. Ich wollte das besser in Ember handhaben, also fing ich an, ember-simple-auth zu implementieren, und ich war in der Lage, die Logins, den Zustand usw. dort ziemlich gut zu handhaben, aber es scheint, dass es immer von einer Token-Strategie abhängt.

Jetzt sieht mein Code wie folgt aus und wie Sie sehen können, muss ich ein Versprechen mit einem Token-Objekt lösen, damit es funktioniert, aber meine gewünschte Strategie erfordert keine Token.

authenticate: function(credentials) { 
      var _this = this; 
      return new Ember.RSVP.Promise(function(resolve, reject) { 
       Ember.$.ajax({ 
        url: _this.tokenEndpoint, 
        type: 'POST', 
        data: JSON.stringify({ 
         email: credentials.identification, 
         password: credentials.password 
        }), 
        contentType: 'application/json' 
       }).then(function(response) { 

        Ember.run(function() { 
         resolve({ 
          token: response.session.token 
         }); 
        }); 
       }, function(xhr, status, error) { 
        var response = JSON.parse(xhr.responseText); 
        Ember.run(function() { 
         reject(response.error); 
        }); 
       }); 
      }); 
     }, 

Meine Frage ist Ember-simple-Auth kann angepasst werden, um mit der ausdrücklichen/Reisepass Domain Cookies zu arbeiten oder muß ich meinen Server ändern, um eine Inhaberstrategie oder oauth2 oder etwas zu verwenden.

Vielen Dank.

Antwort

4

Ember Simple Auth selbst benötigt das Token nicht. In den meisten Fällen benötigt der "Authorizer" jedoch ein Token, um es in Anfragen zu injizieren, die zu Ihrem API-Server gehen (siehe hier: http://ember-simple-auth.simplabs.com/ember-simple-auth-api-docs.html#SimpleAuth-Authorizers-Base). Wenn Sie Cookies verwenden, benötigen Sie eigentlich keinen Authorizer, da der Cookie trotzdem an den Server gesendet wird, um den authentifizierten Benutzer identifizieren zu können. In diesem Fall könnten Sie einfach mit z. { authenticated: true } vom authenticate Verfahren und prüfen, ob dieser Wert im restore Methode:

restore: function(data) { 
    return new Ember.RSVP.Promise(function(resolve, reject) { 
    if (data.authenticated) { 
     resolve(data); 
    } else { 
     reject(); 
    } 
    }); 
} 
+1

Sie Marco für Ihre Antwort und große Plugin danken. Ich habe es funktioniert. Ich werde bald ein Tutorial schreiben. – mobetta

+4

@mobetta Wie kommt das Tutorial? :) – SuperUberDuper

+0

@mobetta irgendwelche Neuigkeiten auf dem Tutorial? – charsi