【问题标题】:Reading token with slimframework用苗条的框架读取令牌
【发布时间】:2015-04-19 18:41:50
【问题描述】:

我正在使用 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. 仅用于清除 - 这种身份验证(登录名和密码)和 OAuth 是否相同?

【问题讨论】:

    标签: access-token slim


    【解决方案1】:

    您可以使用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

    在回调函数中间件中将token的内容存储到$app-&gt;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();
    

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多