2014-10-08 12 views
11

İstemci tarafında ince ve sunucu tarafında angularJS ile basit bir yetkilendirme uygulamayı deniyorum. REST APi'yi Test Etmek için, Res istt.slimframework request-> üstbilgiler okundu Yetkilendirme

Yetkilendirmeyi tamamladıktan sonra, her yolun sonunda, belirli yollar için istekleri yetkilendirmek üzere ince bir şekilde kullanılabilen bir jwt jetonunu çağırmak istiyorum.

Şimdi dinlendim üzerinden gönderdikleri başlık ve gövde aşağıdaki:

Accept: */* 
Accept-Encoding: gzip, deflate 
Content-Type: application/json 
Authorization: jwt-test 
Accept-Language: de-de 

{ 
    "login": "TestLogin", 
    "password": "TestPassword", 
    "uuid": "dsfglj45690dfgkl456" 
} 

Ve daha

sadece bütün başlığındaki çıktısını:

Gördüğünüz gibi
Slim\Http\Headers Object ([data:protected] => Array ([Host] => localhost:8888 
[Content-Type] => application/json [Content-Length] => 89 [Connection] 
=> keep-alive [Accept] => */* [User-Agent] => Rested/2009 CFNetwork/673.4 
Darwin/13.4.0 (x86_64) (iMac13%2C2) [Accept-Language] => de-de [Accept-Encoding] 
=> gzip, deflate)) 

, bu dizinin içinde herhangi Yetkilendirme yoktur .

Ayrıca bunu firefox ile doğrudan, aynı sonuçları kontrol ettim. O, istek başlıklarında istek başlıklarında Yetkilendirme dizesini görebiliyor, ancak ince çerçeve çalışmalarında döküm dizisinde yok.

Sorunumun nerede olduğu konusunda ipucu olan var mı?

peşin Teşekkür ve nazik

solick

+0

Oturum açma başlıklarını nasıl ekliyorsunuz? Paylaştığınız, başlık değil, istek gövdesi gibi görünüyor. Ayrıca, bir kenara göre, ister istek başlıklarında isterse başka bir şekilde olsun, düz metinde bir şifre göndermek için ** gerçekten kötü bir fikirdir. –

+0

Hayır, daha sonra jwt kullanacağım, sadece test için iss. Sadece yetkilendirmeyi başlığa eklerim, daha fazlasını değil. Gördüğünüz gibi, başlık nesnesi ise Slim \ Http \ Headers – solick

+0

Lütfen bu başlıkların nasıl ayarlandığını gösteren bir kod örneği paylaşın. Size bu şekilde daha iyi bir şekilde yardımcı olacağız. –

cevap

22

Sorun bu gibi görünmelidir

Temel kimlik doğrulaması başlık görüyor.

Authorization: Basic cm9vdDp0MDBy 

Basic sonra dize

username:password gibi bir dizeye kullanıcı adı ve şifreyi birleştirerek inşa edilmiştir. Sonuç dizesi daha sonra base64 kullanılarak kodlanır.

Web sunucusuna, PHP'nin ayrıştırmayacağı üstbilgi gönderiyorsunuz. Bunun hata veya özellik olarak kabul edilip edilmediğinden emin değil.

Authorization: jwt-test 

Slim'in güncel sürümü ile Çözüm

dosyayı .htaccess aşağıdaki eklerseniz. Standart olmayan bir başlık bile bunlardan herhangi birine erişebilirsiniz.

string 'jwt-test' (length=8) 
string 'jwt-test' (length=8) 
string 'jwt-test' (length=8) 

Ayrıca, X-Authorization gibi bazı diğer başlık adını kullanabilirsiniz:

var_dump($_SERVER["HTTP_AUTHORIZATION"]); 
var_dump(apache_request_headers()["Authorization"]); 
var_dump($app->request->headers("Authorization")); 

Bu aşağıdaki sonucu verir.

+0

Merhaba Mika, açıklamalarınız için teşekkürler. Sizi anladığım kadarıyla, Apache, Onaylama değerinin kabul edilmesi için özel bir format bekliyor mu? Bunun tanımlandığı bağlantıyı paylaşabilir misiniz? Config.headers.Authorization = 'Bearer' + $ window.sessionStorage.tokenUUID ile angularJS uygulamasında denedim; Ama hala başlıklarını döktüğümde Yetkilendirme alanını göremiyorum. – solick

+0

Yanıtı daha iyi bir çözümle güncellendi. –

+0

Teşekkürler Mika. Ne yazık ki başka bir proje yüzünden durmak zorunda kaldım. Umarım önümüzdeki hafta bu projeye geri dönüp çözümünüzü uygulayabileceğim. – solick

İlgili konular