2013-10-24 2 views
4

저는 새로운 프로젝트 인 symfony 2에서 작업합니다. 저는이 프레임 워크를 동시에 배우고 있습니다. 사용자 관리를 위해 FOSUserBundle 번들을 사용합니다. 프로젝트가 잘 작동하고, 로그인, 등록, 로그 아웃 및 사용 가능한 다른 모든 명령을 사용할 수 있습니다.Symfony 2 - FOSUserBundle - API에 통합하는 방법

내 Symfony 앱의 API를 사용할 스마트 폰 앱을 만들고 싶습니다. 앱에서 사용자는 로그인하거나 가입해야합니다. API에도 FOSUserBundle 메서드를 사용할 수 있습니까?

나는 API를 만들기에 매우 좋은 다른 묶음을 연구했다. FOSRestBundle이다.

/api/login 
    /api/registrer 

그런 다음,이 방법 안에, 내가 FOSUserBundle 방법에 리디렉션 : 해결책이없는 경우에, 당신은 내가 좋아하는 내 자신의 사용자 방법을 만들어야 할 것이라고 생각하십니까? 나는 juste 최고의, 그리고

감사 심포니에

+0

use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; class YourController extends Controller{ //Other Methods.. public function loginAction(Request $request){ try{ $token = $this->get('security.authentication.manager')->authenticate(new UsernamePasswordToken('username', 'password', 'firewall')); $this->get('security.context')->setToken($token); } catch(BadCredentialsException $e){ return new Response("Bad credentials", 403); } return new Response("success"); } } 
는 간단한 RESTful 서비스를 구축하는 방법에 대해 설명합니다 빠른 문서가 : http://silex.sensiolabs.org/doc/cookbook /json_request_body.html 또한이 저장소를 확인하십시오. https://github.com/emedlr/restful-app – Manu

+1

FosRestBundle은 문제를 해결할 수있는 도구/번들입니다. –

+0

@WouterJ, FosRestBundle ... 그러니 내가해야한다는 말입니다. 내 설명에 대한 해결책? "솔루션이 없다면, 내 자신의 사용자 메소드를 생성해야한다고 생각합니까? 그러면이 메소드 내에서 FOSUserBundle 메소드로 리디렉션됩니까?" 도움을 주셔서 감사합니다. – manonthemoon

답변

2

나는 FOSRestBundle을 사용했습니다.

이 번들은 매우 강력하고 구현하기 쉽습니다. 설명서가 아주 완벽합니다.

그것이 내가 너무이 문제가

1
당신은 WSSE를 확인해야

방법에 integrate it API를 사용하여 로그인 및 스마트 폰에서 FOSUserBundle에 등록, 그렇게 할 수있는 가장 깨끗한 방법은 무엇인지 궁금하네요. post도 확인하십시오. 그리고 WSSE 인증을 구현하는 bundle이 있습니다. WSSE는 앱을위한 최상의 솔루션 중 하나입니다.

+0

매우 강력한 FOSRestBundle을 사용했습니다. tool – manonthemoon

5

도움이 희망

FOSRestBundle here의 GitHub의 링크. 내가 최선의 해결책은 발견이

당신은 렉스에 좀 걸릴 수 있습니다
+1

악의적 인 자격 증명이 주어지면 $ this-> get ('security.authentication.manager') -> authenticate가 Symfony 2.7의 로그인 페이지로 리다이렉트 응답을 반환합니다. – programmer

+0

완벽한 솔루션입니다.이 접근 방식으로 FOSUserBundle에서 API 로그인 시스템을 구현했습니다. . 그러나 이것을 추가하는 것을 잊었습니다 : '$ event = new InteractiveLoginEvent ($ request, $ token); $ this-> get ("event_dispatcher") -> dispatch ("security.interactive_login", $ event); ' 자세한 내용은 [여기] (http://stackoverflow.com/a/9550356/4102223)를 참조하십시오. – Arkemlar

관련 문제