2014-10-15 5 views
5

के साथ टोकन पढ़ना मैं लॉगिन और पासवर्ड के साथ टोकन आधारित प्रमाणीकरण को संभालने के लिए स्लिमफ्रेमवर्क और जेडब्ल्यूटी का उपयोग कर रहा हूं।slimframework

मैं लॉगिन करने और प्रतिक्रिया में टोकन भेजने में कामयाब रहा।

<?php 
require_once("vendor/autoload.php"); 

$app = new \Slim\Slim(); 
$app->add(new \Slim\Middleware\ContentTypes()); 

$app->post('/auth/login', function() use ($app) { 
    $params = $app->request()->getBody(); 
    if ($params['email'] == "login" && $params['password'] == "password") { 
     $key = "example_key"; 
     $token = array(
      "id" => "1", 
      "exp" => time() + (60 * 60 * 24) 
     ); 
     $jwt = JWT::encode($token, $key); 
     $app->response->headers->set('Content-Type', 'application/json'); 
     echo json_encode(array("token" => $jwt)); 
    } 
}); 

$app->get("/user", function() { 
    echo "ok"; 
}); 
$app->run(); 
  1. कैसे /user रास्ते में टोकन जाँच करने के लिए:

    यहाँ मेरी कोड है? बनाना /user अनुरोध मैं Authorization:Bearer eHrR....

  2. साथ और बस समाशोधन के लिए शीर्ष लेख भेज रहा - प्राधिकरण (लॉगिन और पासवर्ड) और OAuth ही उस तरह का है?

उत्तर

3

आप JSON Web Token Authentication middleware का उपयोग कर सकते हैं। संगीतकार का उपयोग कर नवीनतम संस्करण स्थापित करें।

$ composer require tuupola/slim-jwt-auth 

.htaccess file पर भी निम्नलिखित जोड़ें। अन्यथा PHP के पास Authorization: Bearer शीर्षलेख तक पहुंच नहीं है।

RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

फिर स्लिम एप्लिकेशन में मिडलवेयर जोड़ें। जब अनुरोध किया जाता है तो मिडलवेयर टोकन को सत्यापित और डीकोड करने का प्रयास करता है। यदि टोकन नहीं मिला है तो सर्वर 401 Unauthorized के साथ प्रतिक्रिया देगा। यदि टोकन मौजूद है लेकिन सर्वर में सत्यापन और डिकोडिंग करते समय कोई त्रुटि होती है तो 400 Bad Request के साथ प्रतिक्रिया होगी।

कॉलबैक फ़ंक्शन मिडलवेयर में $app->jwt को टोकन की सामग्री संग्रहीत करता है। आप बाद में अन्य मार्गों में इसका उपयोग कर सकते हैं।

$app = new \Slim\Slim(); 

$app->add(new \Slim\Middleware\JwtAuthentication([ 
    "secret" => "your_example_key", 
    "callback" => function ($options) use ($app) { 
     $app->jwt = $options["decoded"]; 
    } 
])); 

$app->get("/user", function() { 
    print_r($app->jwt); 
}); 

$app->run();