2016-01-24 2 views
0

Мне нужен совет для авторизации входа в систему. Мое веб-приложение состоит из двух частей: Frontend - это AngularJS и Backend Symfony. Я смог реализовать аутентификацию в Backend, я могу войти туда и получить правильный пользователь из базы данных с правильной ролью.Обработка сеансов в Symfony и AngularJS

Теперь я хотел бы создать сеанс и вернуть его в Frontend. Но как мне это сделать? Я думаю о возвращении сессии с помощью Json Web Token to Angular. Правильно ли это? И что мне нужно реализовать в моем Угловом контроллере, чтобы сохранить этот сеанс правильно?

Спасибо заранее!

Вот мой код:

Backend (Symfony)

 class SecurityController extends Controller { 
/** 
     * @Route("/login", name="login_form") 
     */ 
     public function loginAction(Request $request) { 
      $session = $request->getSession(); 
      // get the login error if there is one 
      $error = $session->get(Security::AUTHENTICATION_ERROR); 
      $session->remove(Security::AUTHENTICATION_ERROR); 

      return new JsonResponse($session); 
     } 

Вот мой Угловое-Frontend

var cardCollectionControllers = angular.module('cardCollectionControllers');cardCollectionControllers.controller('LoginCtrl', ['$scope', '$http', 
function($scope, $http) { 
    $scope.user = {}; 
    $scope.login = function() { 
     $http({ 
      method : 'POST', 
      url  : 'http://localhost:8080/card_collection_backend/web/app_dev.php/login', 
      data : encodeURIComponent('username=' + $scope.username +'&password=' + $scope.password), 
      headers : {'Content-Type': 'application/x-www-form-urlencoded'} 
     }) 
      .success(function(data) { 
       //what to do here? 
      }); 
    };}]); 
+0

JWT является хороший способ пойти, и вы получите пакеты для Symfony, чтобы работать с ними. Сохраните его в Угловом, но вы хотите (то есть локальное хранилище). Вы можете использовать перехватчик http в угловом для автоматического добавления токена ко всем запросам (и обновить токен маркера и т. Д.) – JimL

+0

Спасибо за совет! Btw - это правильный код в Backend? – iChaos

ответ

0

Json Web Токен, соответствующий вашей потребности.

См. LexikJWTAuthenticationBundle, чтобы настроить подлинную аутентификацию JWT в приложении Symfony2 (очень проста в использовании).

И для клиентской стороны, действительно хороший пакет существует для angularJS называемого Satelizer

Существует очень хороший пример реализации этих двух инструментов с Symfony2 и AngularJS:

https://github.com/slashfan/LexikJWTAuthenticationBundleSandbox

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