2016-07-20 21 views
0

Ich verwende ember-simple-auth Bibliothek mit Rails-Token-basierter Authentifizierung im Back-End. Ember Version ist:ember aktuelle Benutzerinformationen aus der Sitzung abrufen und currentUser für die Verwendung in der Vorlage festlegen

ember-cli: 2.6.2 
node: 6.3.0 
ember-simple-auth: 1.1.0 

ich in einem Benutzer angemeldet erfolgreich in der Lage war. Kann jedoch nicht auf aktuelle Benutzerinformationen zugreifen. Der folgende Code funktioniert:

{{#if session.isAuthenticated}} 
     <p>i m logged in</p> 
     <a href="#" {{action 'logout'}}>Logout</a> 
    {{else}} 
     <p>i m not logged in</p> 
    {{/if}} 

aber der folgende Code funktioniert nicht

{{session.store.authenticated.email}} 

Ich wollte Benutzerinformationen erhalten, aber fehlgeschlagen. So graben ich in die mater und verwendet ember Helfer als:

<p>{{log session}}</p> 

Es hat mir geholfen, und ich war in der Lage, wie aktuelle Benutzerinformationen zu erhalten:

<p>{{session.session.content.authenticated.email}}</p> 

was gut ist, aber ich möchte so etwas wie die folgende:

<p>{{session.currentUser.email}}</p> 

oder einfach:

<p>{{currentUser.email}}</p> 

Wie kann ich meinen Anwendungscontroller ändern, damit er aktuelle Benutzerinformationen besser abrufen kann? Der Code meines Anwendungscontrollers lautet:

// /app/controllers/application.js 

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    session: Ember.inject.service('session'), 

    actions: { 
    logout() { 
     this.flash.success('Successfully logged out!', 5000); 
     this.get('session').invalidate(); 
    } 
    } 
}); 

Antwort

0

Ihre Sitzungsdaten sind in der Dateneigenschaft des Sitzungsobjekts verfügbar. Überprüfen Sie die "authenticate" -Methode in docs für weitere Informationen.

So können Sie darauf zugreifen, d. H. {{session.data.authenticated.email}}. Je nach Ihren Sitzungsdatum könnten Sie eine berechnete Eigenschaft in Ihrem Controller machen, damit es in der Vorlage besser aussieht ...

currentUser: Ember.computed('session.data', function() { 
    return this.get('session.data.authenticated.currentUser'); 
    }) 
+0

Ich brauche ein wenig mehr Unterstützung in Bezug auf „Ember.component“ Ich habe den obigen Code zu dem addierte Controller, aber ich kann immer noch nicht innerhalb der Vorlage auf {{currentUser.email}} oder {{session.currentUser.email}} zugreifen. Obwohl {{session.data.authenticated.email}} funktioniert, danke, dass du das in [docs] ( –

+0

) unter http://ember-simple-auth.com/api/classes/SessionService.html angezeigt hast müssen Sie die berechnete Eigenschaft ändern, um 'this.get ('session.data.authenticated') zurückgeben', die Ihr Sitzungsdatenobjekt einfach currentUser in der Vorlage – Igor

+0

als Dank für das Aushelfen alias. es funktionierte :) –