2012-01-10 46 views
7

Oturumları yoğun bir şekilde kullanan bir PHP uygulamasına sahibim. Şu anda kullanıcılarımız için bir API oluşturmayı düşünüyoruz. İlk düşüncelerimiz kullanıcıların e-posta adresleri, şifreleri ve bir API anahtarı (her kullanıcı için benzersiz) ile api'ye karşı kimlik doğrulaması yapmaları gerektiğidir. Bununla birlikte, mevcut uygulama (modeller dahil) kullanıcı oturumlarına geniş ölçüde bağlı olduğundan, en iyi yaklaşımdan emin değilim. Bir API isteği doğru doğrulanır varsayarsakPHP API kimlik doğrulaması ve oturumları

, bu kabul edilebilir olurdu için:

  • Başlat kullanıcı
  • çalıştırın modelleri doğrulanmış ve kullanıcıya json/xml dönmek bir kez API çağrısı için oturumu
  • Bu oturumda her API çağrısı için örneği ve ardından hemen kızarmış alır demektir oturumu

öldür. Bu tamam? Yoksa başka alternatifleri de düşünmeli miyiz?

+0

Doğru değilsiniz, API vatansız olmalı ve mümkünse oturumları/çerezleri kullanmamalısınız. Ama bu kolayca yapılabilir, sorun değil. Bununla birlikte, mevcut bir kimlik doğrulama çerçevesini yeniden kullanmalısınız, çünkü gerçekten karmaşıktır. Örneğin, hem çerçeve-agnostik hem de veritabanı-agnostik olan https://github.com/delight-im/PHP-Auth adresine bir göz atın. Sonra her istek ile kimlik bilgilerini gönderin ve sunucuya (1) giriş yapın, (2) asıl işi yapın ve son olarak (3) tekrar çıkış yapın. – caw

cevap

1

API oluşturmayla ilgili deneyimimde, oturumların her bir yürütme döngüsünde yalnızca bir istek için ve oturum bilgilerini yeniden oluşturduğunu en iyi şekilde buldum.

Bu, oturum örneklemenizin önemli olup olmadığını açıkça bir ek yük getiriyor, ancak bir veritabanına karşı yalnızca kimlik bilgilerini denetliyorsanız, Tamam olması gerekir. Ayrıca, her istekte kimlik doğrulaması doğrulanırken bir oturumu yeniden oluşturmak için gereken işi azaltan oturum yerine kullanıcı tanımlayıcısına dayalı olarak APC veya memcache gibi ağır kaldırma işlemlerinden herhangi birini önbelleğe almanız gerekir.