我正在使用 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();
- 如何检查令牌
/user
小路?
制作/user
请求我发送标头Authorization:Bearer eHrR....
- 只是为了清除 - 这种身份验证(登录名和密码)和 OAuth 相同吗?
您可以使用JSON Web Token 身份验证中间件 http://www.appelsiini.net/projects/slim-jwt-auth。使用 Composer 安装最新版本。
$ composer require tuupola/slim-jwt-auth
还将以下内容添加到.htaccess file
。否则 PHP 将无法访问Authorization: Bearer
header.
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
然后将中间件添加到 Slim 应用程序中。当发出请求时,中间件尝试验证和解码令牌。如果未找到令牌,服务器将响应401 Unauthorized
。如果令牌存在,但在验证和解码时出现错误,服务器将响应400 Bad Request
.
在回调函数中,中间件将 token 的内容存储到$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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)