Qualcuno ha un esempio o un'idea su come implementare FOSRestBundle insieme al FOSUserBundle. Ho già sviluppato un'app Web con Symfony 2 e FOSUserBundle, ma vorrei aggiungere FOSRestBundle per un livello API. Voglio essere in grado di passargli un nome utente e una password e ricevere un certo tipo di token dal FOSUserBundle che rappresenta l'utente che ha effettuato l'accesso che posso quindi passare e passare tra altre chiamate API. Qualcuno sa di un buon modo per farlo?Integrazione di FosUserBundle con FosRestBundle
5
A
risposta
3
FOSUserBundle
dovrebbe essere nativamente "riposante" nel senso che potrebbe seguire le raccomandazioni REST.
Tuttavia, non è progettato per funzionare in modo nativo con FOSRestBundle
, il modo più semplice per farlo è quello di sovrascrivere UserController nel pacchetto e adattare le azioni.
Ad esempio, per consentire la registrazione di riposo, si può scrivere la seguente azione:
public function postUsersAction()
{
$form = $this->container->get('fos_user.registration.form');
$formHandler = $this->container->get('fos_user.registration.form.handler');
$confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
$process = $formHandler->process($confirmationEnabled);
if ($process) {
$user = $form->getData();
$authUser = false;
if ($confirmationEnabled) {
} else {
$authUser = true;
}
$response = new Response();
if ($authUser) {
/* @todo Implement authentication */
//$this->authenticateUser($user, $response);
}
$response->setStatusCode(Codes::HTTP_CREATED);
$response->headers->set(
'Location',
$this->generateUrl(
'api_users_get_user',
array('user' => $user->getId()),
true
)
);
return $response;
}
return RestView::create($form, Codes::HTTP_BAD_REQUEST);
}
A proposito tenere a mente per aggiornare il FOSUserBundle alla versione più recente, c'era alcuni problemi di sicurezza. Dai un'occhiata al blog di Symfony per maggiori informazioni: http://symfony.com/blog/security-release-fosuserbundle – F481