2012-01-10 4 views
7

세션에 광범위하게 의존하는 PHP 애플리케이션이 있습니다. 이제 사용자를위한 API를 구축 할 것을 고려 중입니다. 초기 생각은 사용자가 이메일 주소, 비밀번호 및 API 키 (각 사용자마다 고유)를 사용하여 API에 대해 인증해야한다는 것입니다.PHP API 인증 및 세션

그러나 현재 응용 프로그램 (모델 포함)은 사용자 세션에 광범위하게 의존하기 때문에 최상의 접근 방식에 대해서는 확신하지 못합니다. API 요청이 제대로 인증된다고 가정

, 그것은 허용 될 수로 :

  • 시작 사용자가
  • 실행 모델을 인증하고 사용자에게 JSON/XML을 반환되면 API 호출에 대한 세션
  • 이 세션은 각 API 호출에 대해 인스턴스화 한 다음 즉시 플러시됩니다 것을 의미 세션

처치하십시오. 이거 괜찮아? 아니면 다른 대안을 고려해야합니까?

+0

정확합니다. API는 상태가없고 가능한 경우 세션/쿠키를 사용하지 않아야합니다. 하지만 쉽게 해결할 수 있습니다. 그러나 실제로는 복잡하기 때문에 기존 인증 프레임 워크를 다시 사용해야합니다. 예를 들어, https://github.com/delight-im/PHP-Auth는 프레임 워크에 독립적이며 데이터베이스에 독립적입니다. 그런 다음 모든 요청과 함께 자격 증명을 보내고 서버에서 (1) 로그인하고, (2) 실제 작업을 수행 한 다음 마지막으로 (3) 다시 로그 아웃하십시오. – caw

답변

1

API를 작성한 경험에서 세션이 한 요청에 대해서만 지속되고 각 실행주기마다 세션 정보를 다시 만드는 것이 가장 좋습니다.

세션 인스턴스화가 중요 할 경우 오버 헤드가 발생하지만 데이터베이스에 대한 자격 증명을 확인하는 경우에는 정상적으로 처리되어야합니다. 또한 각 요청에서 인증을 확인하면서 세션을 다시 만드는 데 필요한 작업을 줄이기 위해 세션보다는 사용자 식별자를 기반으로 APC 또는 memcache와 같은 무거운 물건을 캐시 할 수 있어야합니다.