用slimframework读取令牌

时间:2014-10-15 10:12:18

标签: access-token slim

我正在使用SlimFramework和JWT通过登录名和密码处理基于令牌的身份验证。

我设法登录并发送令牌作为回应。

这是我的代码:

<?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. 发送标头
  3. 只是为了清算 - 那种认证(登录和密码)和OAuth是一样的吗?

1 个答案:

答案 0 :(得分:4)

您可以使用JSON Web Token Authentication middleware。使用composer安装最新版本。

$ composer require tuupola/slim-jwt-auth

同时将以下内容添加到.htaccess file。否则PHP将无法访问Authorization: Bearer标题。

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

然后将中间件添加到Slim应用程序中。请求时,中间件会尝试验证和解码令牌。如果未找到令牌,则服务器将使用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();