Come creare un proprio servizio accessibile a livello globale che chiamerà il server entro il currentUser()
solo una volta al caricamento della pagina, se l'utente è connesso, conservarlo e fornire dati ai controller o agli stati fino al logout? Ora mi sto risolvendo molte volte in molti stati o controller currentUser()
, ho trovato nei documenti: authparseresponse che è possibile fare il proprio servizio, ma non so come gestirlo nel modo giusto.Come mantenere l'utente corrente globale fino al logout con angular_devise?
esempio in ui-router Ho due chiamate al server, sarebbe sufficiente solo quando la pagina viene caricata:
.state('login', {
url: '/login',
templateUrl: 'auth/_login.html',
controller: 'AuthCtrl',
onEnter: [
'$state', 'Auth',
function($state, Auth) {
Auth.currentUser().then(function() {
$state.go('home');
});
}
]
})
.state('dashboard', {
url: '/dashboard',
templateUrl: 'dashboard.html',
onEnter: [
'$state', 'Auth',
function($state, Auth) {
Auth.currentUser().then(function(user) {}, function(err) {
$state.go('home');// user not logged in
});
}
]
})
o ogni volta successiva chiamata del server in NavController:
app.controller('NavController', [
'$state', '$scope', 'Auth', function($state, $scope, Auth) {
$scope.signedIn = Auth.isAuthenticated;
$scope.logout = Auth.logout; // logout function
Auth.currentUser().then(function(user) {
$scope.user = user;
});
$scope.$on('devise:login', function(e, user) {
$scope.user = user;
});
$scope.$on('devise:logout', function(e, user) {
$scope.user = {};
$state.go("home");
});
}
]);
ho trovato domanda simile senza risposta: stackoverflow
Avete il controllo del server di login back-end? Pubblicherò una soluzione per ciò che è facile e comune, ma richiede una funzione aggiuntiva lato server. –
@FerTo Sto usando Ruby on Rails con [Devise gem] (https://github.com/plataformatec/devise), quindi volevo combinarlo senza dolore con [angular_devise] (https://github.com/ cloudspace/angular_devise). – luzny
Oh ok, dovresti "ignorare" il mio codice. –