2012-06-09 3 views
0

현재 Symfony2를 사용하여 REST API를 작성 중입니다. 한 달 전에 Symfony2를 사용하기 시작했고 현재 기술적 인 어려움에 직면하고 있습니다.Symfony2 컨트롤러에서 주석 기반 요구 사항 삽입

API를 작성하는 동안 API 호출을 IP 주소 또는 사용자별로 제한하려고했습니다 (예 : 사용자가 로그인 한 경우 자신의 ID, 타임 스탬프 및 IP 주소를 사용하여 연결 추적을 유지합니다). 그가 로그인하지 않은 경우 내 IP 주소와 타임 스탬프를 데이터베이스에 저장합니다. VoterInterface을 구현하는 서비스를 작성했으며 사용자가 컨트롤러에 액세스 할 때마다 Symfony가 전화를 걸어 시간당 또는 일별 API 속도 제한을 초과하지 않았는지 (둘 다 하드 코드되었는지) 확인합니다. 지금까지는 제대로 작동합니다.

더 많은 맞춤 설정이 가능하고 확장 가능한 항목을 원한다면 각 컨트롤러마다 자체 제한을 설정하여 각 항목에 대한 API 속도 제한을 쉽게 제어하고 변경할 수 있습니다. 을 채우기 위해 내 속도 제한 클래스의 주석 정보를

/** 
* My API - UserController::registerAction 
* 
* @RateLimit(hour="200", day="2000") 
*/ 
public function registerAction($format) 

그리고 다음 검색 : 내 생각은 당신이 JMSSecurityExtraBundle로 사용하고 같은 내 컨트롤러 뭔가 각각의 상단에 지정할 수있는 것과 같은 주석을 사용하는 것입니다 정보를 제한합니다. 문제는 어떻게 찾을 수 없었으며 도움이 필요하다는 것입니다. 내 솔루션이 작동, 나는 단지 더 강력한 뭔가가 필요합니다. 나는 이미 YAML 파일이나 데이터베이스에 이러한 정보를 저장하는 것에 대해 생각했지만, 내 컨트롤러와 지속성간에 불필요한 종속성을 만들어내는 좋은 해결책은 아닙니다.

도움을 주셔서 감사합니다.

답변

1

AOP Bundle을 참조하십시오. 원하는 것을하기위한 수단을 제공합니다.