J'ai utilisé simplabs ember-simple-auth en braise et ai configuré les rails en utilisant concevoir. quand authenticate() est appelé, il envoie l'email et le mot de passe aux rails. qui renvoie le jeton. Je peux voir le jeton dans localstorage comme suit mais dès que je clique sur actualiser les données sont perdues me ramenant à la page de connexion.ember-simple-auth avec une session machine perdue lors de la régénération
{"secure":{
"authenticator":"authenticator:devise",
"id":1,"email":"[email protected]",
"created_at":"2015-12-21T06:25:31.000Z",
"updated_at":"2015-12-22T10:11:56.728Z",
"authentication_token":"UoUTuVmUfwsVUnHVkE4U",
}
}
dans ma fonction authenticate() J'ai configuré concevoir en tant qu'authentificateur avec les informations d'identification.
export default Ember.Controller.extend({
_email: Ember.inject.controller('email'),
session: Ember.inject.service('session'),
actions: {
authenticate(){
let identification = this.get('_email.email');
let password = this.get('password');
console.log(identification, password);
this.get('session').authenticate("authenticator:devise",identification,password).catch((reason)=>{
this.set('errorMessage',reason.error|| reason);
});
}
}
});
dans mon dossier authentificateurs j'ai défini devise.js qui contient
import DeviseAuthenticator from 'ember-simple-auth/authenticators/devise';
export default DeviseAuthenticator.extend();
dans mon dossier approbateurs j'ai défini devise.js qui contient
import DeviseAuthorizer from 'ember-simple-auth/authorizers/devise';
export default DeviseAuthorizer.extend();
ma config/environnement. js contient
ENV['simple-auth']={
authorizer: 'simple-auth-authorizer:devise'
};
ENV['simple-auth-devise']={
identificationAttributeName: 'email',
resourceName:'user',
tokenAttributeName: 'authentication_token'
};
selon Ember Simple Auth: Session lost on refresh en précisant identificationAttributeName: 'email' aurait dû résoudre le problème mais il persiste. rails latéraux
de application_controller.rb
class ApplicationController < ActionController::Base
respond_to :json
protect_from_forgery with: :null_session
before_filter :authenticate_user_from_token!
private
def authenticate_user_from_token!
authenticate_with_http_token do |token, options|
user_email = options[:email].presence
user = user_email && User.find_by_email(user_email)
if user && Devise.secure_compare(user.authentication_token, token)
sign_in user, store: false
end
end
end
end
et session_controller.rb:
class SessionsController < Devise::SessionsController
def create
respond_to do |format|
format.html { super }
format.json do
self.resource = warden.authenticate!(auth_options)
sign_in(resource_name, resource)
data = {
token: self.resource.authentication_token,
email: self.resource.email
}
render json: data, status: 201
end
end
end
end
routes sont configurés pour utiliser le contrôleur de session. Je viens de commencer emberjs et je suis coincé là-dessus depuis quelques jours maintenant. Je ne sais pas où j'ai manqué quelque chose.
Utilisez-vous le magasin de stockage local? Et si oui, que voyez-vous être stocké là? – usernames
le contenu du stockage local est sur le dessus – Ccr