J'ai une simple application Ember (repo) avec l'authentification en utilisant ember-simple-auth (j'ai suivi cet article https://medium.com/@benhansen/token-based-authentication-with-jwt-ember-and-rails-af54b03fe237). Une fois connecté, j'ai accès à currentUser dans mes routes, contrôleurs et modèles. Cependant, si je navigue vers n'importe quel itinéraire en plus de mon ApplicationRoute et recharger le navigateur, je ne peux plus accéder à currentUser dans cette route, mais il est disponible dans le modèle. Si je retourne à l'itinéraire d'application et navigue à nouveau à l'autre, alors je peux accéder à currentUser. Comment puis-je résoudre ce problème, c'est-à-dire que je veux pouvoir accéder à currentUser dans n'importe quel itinéraire même après rechargement?Ember-simple-auth peut obtenir currentUser après recharge
ApplicationRoute:
import Ember from 'ember';
import ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin';
export default Ember.Route.extend(ApplicationRouteMixin, {
sessionAccount: Ember.inject.service(),
beforeModel() {
this.get('sessionAccount').loadCurrentUser();
}
});
service SessionAccount:
import Ember from 'ember';
const { inject: { service }, RSVP } = Ember;
export default Ember.Service.extend({
session: service('session'),
store: service(),
loadCurrentUser() {
if (this.get('session.isAuthenticated')) {
this.get('store')
.queryRecord('user', { me: true })
.then((user) => {
this.set('currentUser', user);
});
} else {
return RSVP.resolve();
}
}
});
Réservations itinéraire - 'l'autre' itinéraire:
import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin, {
sessionAccount: Ember.inject.service(),
model() {
const currentUser = this.get('sessionAccount.currentUser');
return this.get('store').query('booking', {
filter: {
'user_id': currentUser.id
},
include: 'rental,rental.rental-ratings'
});
}
});