Herkese hayırlı bayramlar dilerim. Php Slim framework ile api yazımını gerçekleştirdim. Son olarak jwt eklemek istiyorum. Jwt ile ilgili türkçe bir kaynak var mı acaba. ? Aşağıdaki örneği bir türlü uygulayamadım. Bu konuda yardımcı olabilir misiniz. ? Saygılar.
https://arjunphp.com/secure-web-serv...im3-framework/
Güncel. Arkadaşlar linkteki yazıdan token elde edemiyorum. Middware kısmında namespacelerde sıkıntı var diyor. Var mı acaba yardımcı olabilecek.
Proje dizinine girip "composer start" ile paketleri yükledikten sonra çalıştı. Mac ortamında çalıştırdım.
Php SlimFramework Jwt Ekleme Hakkında
6
●505
- 05-06-2019, 15:38:16Aldigin hatayi (trace) koyabilirmisin?
$app = new SlimApp; $app->add(new TuupolaMiddlewareJwtAuthentication([ "path" => "/api", /* or ["/api", "/admin"] */ "secret" => "supersecretkeyyoushouldnotcommittogithub" ]));sunun calismasi lazim. Tuupola paketini bende kullandim bir proxy api icin. herhangi bir sorunla karsilasmadim. - 06-06-2019, 22:51:57Yeni sürümde çalıştıramadım hocam. Sitedeki kişinin paylaştığı kodların indirdim ve sonrasında "composer install" dedim. Tabii içerisindeki paketler vs. o tarihte oluşturulan versiyonları ile kullanmış oldum. Yarın bir deneyip yine buradan yazacağım.Slim ile geliştirmek istedim firebase daha mantıklıydı ama biraz yabancı olmam slimframeworke yönlendirdi beni. Teşekkür.lucky13boy adlı üyeden alıntı: mesajı görüntüle
Postman ile request atıyorum ama Loading diyor hoccam. Middleware tüm kodlarım bunlar. Başka bir kütüphane mi eklenmesi gerekiyor. composer require tuupola/slim-jwt-auth ile bunu ekledim.lucky13boy adlı üyeden alıntı: mesajı görüntüle
<?php use SlimApp; $app = new SlimApp; $app->add(new TuupolaMiddlewareJwtAuthentication([ "path" => "/api", /* or ["/api", "/admin"] */ "secret" => "supersecretkeyyoushouldnotcommittogithub" ])); ?>
Bu da şu an kullandığım projenin middleware.php dosyası
$app->add(new TuupolaMiddlewareJwtAuthentication([ "path" => "/api", /* or ["/api", "/admin"] */ "attribute" => "decoded_token_data", "secret" => "supersecretkeyyoushouldnotcommittogithub", 'secure' => false, "algorithm" => ["HS256"], "error" => function ($response, $arguments) { $data["status"] = "error"; $data["message"] = $arguments["message"]; return $response ->withHeader("Content-Type", "application/json") ->write(json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); } ])); - 07-06-2019, 15:58:49Loading diyip takilmasi muhtemelen baska bir sorundan kaynakli.
Route kodunu ve postman request'ini de eklermisin? - 07-06-2019, 16:16:38Postman ile şimdi response 200 dönüyor ama bir veri gözükmüyor.lucky13boy adlı üyeden alıntı: mesajı görüntüle
/login kısmından token dönüşü oluyor.
routes.php
<?php use SlimApp; use SlimHttpRequest; use SlimHttpResponse; use FirebaseJWTJWT; return function (App $app) { $app->post('/login', function (Request $request, Response $response, array $args) { $input = $request->getParsedBody(); $sql = "SELECT * FROM users WHERE email= :email"; $sth = $this->db->prepare($sql); $sth->bindParam("email", $input['email']); $sth->execute(); $user = $sth->fetchObject(); // verify email address. if(!$user) { return $this->response->withJson(['error' => true, 'message' => 'These credentials do not match our records.']); } // verify password. if (!password_verify($input['password'],$user->password)) { return $this->response->withJson(['error' => true, 'message' => 'These credentials do not match our records.']); } $settings = $this->get('settings'); // get settings array. $token = JWT::encode(['id' => $user->id, 'email' => $user->email], $settings['jwt']['secret'], "HS256"); return $this->response->withJson(['token' => $token]); }); $app->group('/api', function(SlimApp $app) { $app->get('/user',function(Request $request, Response $response, array $args) { print_r($request->getAttribute('decoded_token_data')); /*output stdClass Object ( [id] => 2 [email] => arjunphp@gmail.com ) */ }); }); };Postman ekran görüntüsü

- 07-06-2019, 16:26:44return ettigin birsey yok ?
200 donuyor, evet request dogru ama response body yok o yuzden bos gorunuyor. - 07-06-2019, 17:53:29return $request->getAttribute('decoded_token_data'); bu şekilde ekledim ama yine dönüş olmadı.lucky13boy adlı üyeden alıntı: mesajı görüntüle

"secure" => false parametresini middleware.php dosyasına ekledim. Sonuç Çalıştı. Teşekkür ederim.

