Valonix
@Valonix
Back end / Front end developer

MEAN как сохранить юзера после login?

Привет. Учусь с данным стеком. Запустил сервер, поставил nginx. Создал две модели User и Post.
На сервере аутентификация происходит с помощью passport

var mongoose = require('mongoose');
var User = mongoose.model('User');
var LocalStrategy = require('passport-local').Strategy;
var bCrypt = require('bcrypt-nodejs');
serializeUser и deserializeUser функции .
Дальше идет логика login и register . Стандартная что нашел на просторах интернета :)
На клиенте использую ангуляр 1.4.7. Пока есть Регистрация, Логин и отправка постов и получение их. Это что касается клиента. Вопрос в том, что после логина в passport я вижу что в сессии (если я не путаю) висит текущий юзер. А в ангуляре после того, как обновлю страницу конечно же его уже нет в $rootScope и $scope.
Так вот вопрос. Как я понял есть angular-cookies которые я заинклюдил. Они мне и нужны для того, чтобы сохранять пользователя во всех state ? Если да, то как их использовать? Использовать как сервис и возвращать объект после сохранения или удаления и .д. или как то иначе? :)
И на будущее вопрос, нет ли примерчика как использовать passport для регистрации например с Facebook , Twitter и т.д. на сайте пасспорта не совсем ясно. Я просто совсем еще нуб в Nodejs. Только учусь.
И последний вопрос, объясните мне в каком месте приложения мне использовать run? Читаю доку и не могу понять что от меня хотят.
Спасибо.
  • Вопрос задан
  • 312 просмотров
Пригласить эксперта
Ответы на вопрос 2
Valonix
@Valonix Автор вопроса
Back end / Front end developer
update:
Кажется пока создавал тему, с куками я разрулил, не знаю только насколько это верно. По крайней мере на клиенской части что касательно монги юзера и юзера в scope .
angular.module('authController',  ['ngCookies'])

        .controller('authController', ['$scope', '$http', '$rootScope', '$location', '$cookies', function($scope, $http, $rootScope, $location, $cookies){
            $scope.user = {username: '', password: ''};
            $scope.error_message = '';

            $scope.login = function(){
                $http.post('/auth/login', $scope.user).success(function(data){
                    if(data.state === 'success'){
                        $rootScope.authenticated = true;
                        $rootScope.current_user = data.user.username;
                        $cookies.putObject('user', data.user);
                        $location.path('/');
                    }
                    else{
                        $scope.error_message = data.message;
                    }
                });
            };

      }]);

})();


И потом в главном модуле где происходит run

.run(function($rootScope, $cookies) {
             $rootScope.authenticated = false;
             $rootScope.current_user = '';

             var cookies = $cookies.getObject('user');
             if(cookies){
                 $rootScope.authenticated = true;
                 $rootScope.current_user = cookies.username;
             }


             $rootScope.signout = function(){
                $http.get('auth/signout');
                $rootScope.authenticated = false;
                $rootScope.current_user = '';
            };
        });


Не знаю правда, насколько правилен такой подход.. :) Теперь остается вопрос, что с аутентификацией с соц сетей? :)
Ответ написан
Комментировать
Можете посмотреть как тут организовано https://github.com/meanjs/mean/tree/master/modules...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы