我正在使用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)
/user路径中的令牌?发出/user请求我正在发送标题Authorization:Bearer eHrR....您可以使用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)
| 归档时间: |
|
| 查看次数: |
7221 次 |
| 最近记录: |