用slimframework读取令牌

pie*_*nik 5 slim access-token

我正在使用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();
Run Code Online (Sandbox Code Playgroud)
  1. 如何检查/user路径中的令牌?发出/user请求我正在发送标题Authorization:Bearer eHrR....
  2. 只是为了清算 - 那种认证(登录和密码)和OAuth是一样的吗?

Mik*_*ola 5

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

$ composer require tuupola/slim-jwt-auth
Run Code Online (Sandbox Code Playgroud)

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

RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Run Code Online (Sandbox Code Playgroud)

然后将中间件添加到 Slim 应用程序中。当发出请求时,中间件会尝试验证和解码令牌。如果未找到令牌,服务器将以401 Unauthorized. 如果令牌存在但在验证和解码时出错,服务器将以400 Bad Request.

在回调函数中,中间件将令牌的内容存储到$app->jwt. 您可以稍后在其他路线中访问它。

$ composer require tuupola/slim-jwt-auth
Run Code Online (Sandbox Code Playgroud)