2015-06-17 2 views
2

Я использую бэкэнд sails.js, аутентифицирующую с использованием паспорта и интерфейс angular.js. Мое приложение позволяет пользователям регистрироваться и их информация сохраняется. Прямо сейчас я могу получить список этих пользователей через $ http в угловом контроллере и отобразить их в представлении. Тем не менее, я полностью зациклен на получении только текущего пользователя. Я довольно новичок в такого рода программировании, и ничто в Интернете пока не помогает мне понять, что мне нужно делать. Может ли кто-нибудь представить пример или рассказать мне, что нужно сделать, чтобы получить только текущего, зарегистрированного пользователя, а не ВСЕ пользователей?Как получить текущий пользователь узла в угловом режиме

ответ

3

В api/controller/UserController.js. Эта функция парусов возвращает текущую пользовательскую информацию в req.user.

module.exports = { 
    getUser: function(req,res) { 
     return res.send(req.user); 
}; 

В config/routes.js. Это маршрут к функции getUser в UserController.js.

'/getUser': { 
    controller: 'UserController', 
    action: 'getUser' 
} 

В активах/JS/controllers.js, вот запрос $ HTTP функции 'GetUser' в UserController.js. Вот как вы получаете информацию от req.user в интерфейсе.

angular.module('myApp.controllers', []). 
    controller('myCtrl', ['$scope', '$http', function($scope, $http) { 
    $http.get("http://localhost:1337/user/getUser").then(function(result) { 
    $scope.currentUser = result.data; 
    }) 
}]); 

В активах/js/app.js убедитесь, что ваш угловой маршрут установлен на ваше мнение.

config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/view', {templateUrl: 'partials/view.html', controller: 'myCtrl'}); 
}]); 

После ввода этого кода (с помощью собственных переменных/маршрутов/информации сервера) в правильных местах, вы можете получить доступ к текущему пользователю, на ваш взгляд, как этот

<div ng-controller="myCtrl"> 
    {{ currentUser.email }} <br> 
    {{ currentUser.username }} <br> 
    {{ currentUser.etc }} 
</div> 

Я искал Интернет высокий и низкий на неделю для ответа на то, как это сделать, и в конечном итоге придумал это. Я вижу, что многие люди (особенно на этом сайте) задали один и тот же вопрос, и я действительно не нашел хорошего явного ответа. Поэтому я думал, что опубликую то, что я придумал, как ответ на мой собственный вопрос.

3

Как только вы аутентифицируете пользователя через Passport, он сохраняет текущего пользователя в объекте request как request.user.

Вы можете создать конечную точку в своем API, которая возвращает этот объект, а затем извлечь его с помощью функции Угловая.

+0

Спасибо, что ответили. Я использую паруса, а не выражаю. Я понимаю, что информация хранится в req.user. Я просто не знаю, как я могу получить то, что находится в req.user внутри моего контроллера angular.js, чтобы использовать его в представлении. –

+0

Ах, извинения. Если у вас есть контроллер, назначенный для авторизации или пользователей, вы можете создать там конечную точку, которая сделает это. Что-то вроде '/ me'. Синтаксис будет почти таким же - вы все еще создаете функцию, которая принимает «запрос» и «ответ», и вы просто отправляете 'request.user' на передний конец. Что касается Angular - вы используете с ним структуру auth? – fiiv

+0

У меня на сервере есть AuthController.js. Что я/точно? Я видел и читал об этом много, но я не получаю много объяснений. Кроме того, как только будет написано, как функция SEND req.user будет работать с интерфейсом? И я не знаю, что такое каркас auth для углового. Должна ли я быть? –

Смежные вопросы