2013-05-20 19 views
10

Phil Sturgeon Rest Server ürününü kullanarak basit bir RESTful hizmeti yazıyorum. Bu kitaplık ile sağlanan API anahtarını kullanarak yöntemlerimi korumak istiyorum.REST hizmeti için Codeigniter auth anahtarı

Ne yazık ki, bu çok iyi belgelenmiş değil ve biraz kaybolacağım.

Kullanıcıların kimliğini doğrulamak istiyorum (e-posta/parola), sonra diğer istekleri göndermek için bir auth anahtarı oluşturun. Ama öyle görünüyor ki zaten bir tane oluşturmak için auth anahtarına ihtiyacım var ... Bir kukla anahtar oluşturmak çok güvenli görünmüyor. Üzgünüm, aptalca bir soru olsa da, en iyi uygulama hangisi olmalı?

cevap

11

Diğer API'lere aşina iseniz, ortak bir desen dikkatinizi çekecektir. Kullanıcının e-postalarını ve şifrelerini geçtiği bir kimlik doğrulama yöntemini öneririm. Bu, oluşturulan benzersiz bir kimlik doğrulama anahtarını döndürür. Kimlik doğrulama anahtarı bir oturum kimliği gibi olurdu, çerezlerin nasıl çalıştığını düşünün. Daha sonra, diğer tüm API yöntemleri $ this-> post ('auth') 'ı kontrol etmeli ve her isteği işlemeye başlamadan önce bunu, bu işlemi sizin oturum işleyicinizle (yani veritabanı veya oturumlar) karşılaştırmalısınız.

Çok fazla kod gibi görünüyor ha? Hayır!

class MyAPIController extends Rest_controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 

     if(!authCheck($this->post('auth'))){ 
      returnFailedResponse(); 
      exit(); 
     } 
} 

Sonra Phil Sturgeon'un web sitesinde örneklerde olduğu gibi, normalde size API yazma:

Tüm modeller aşırı yüklenmiş yapıcı olmalıdır.

Auth anahtarının geçerli olduğunu sınamak için authCheck olan bir model oluşturun ve 401 Yetkisiz olarak döndürmesi için returnFailedResponse yöntemi kullanın.

Başka bir denetleyicide, 'Auth' olarak adlandırın, yukarıdaki contructor'ı kullanın.

Artık api'nize yapılan her çağrı, Auth için bir üstbilgi ayarlamalıdır. Ör. 'Kimlik: 12m34k23b'.

+0

Teşekkür ederiz! Buna benzer bir şey yapmayı bitirdim. Cevabınızı kabul edildi olarak işaretleyeceğim. – jose

+0

im şu anda oturuma nasıl erişileceği durumunda. Oturum açmayı zaten denedim giriş oturumu oluşturmada başarılı ancak bir sonraki istek giriş yapmamış. Lütfen kimlik doğrulama yolunu anlayamama yardım edin :( –

İlgili konular