【发布时间】:2017-05-29 21:08:27
【问题描述】:
我已经使用此代码从我的 api 登录生成了一个令牌:
if ($isCorrect == 1) {
$key = "example_key";
$token = array(
"iss" => "http://mywebsite.com",
"iat" => 1356999524,
"nbf" => 1357000000,
'data' => [
'userName' => $UserName,
]
);
$jwt = JWT::encode($token, $key);
$decoded = JWT::decode($jwt, $key, array('HS256'));
$unencodedArray = ['jwt' => $jwt];
echo json_encode($unencodedArray);
}
所以我现在有一个令牌,我怎样才能将令牌用于其他 api?我的意思是,我不希望任何人在不登录的情况下执行此 API。
这是我的示例 API 方法:
$app->get('/api/user/{UserId}', function($request){
//Select query here
});
这是我使用的库:https://github.com/firebase/php-jwt
非常感谢您的帮助。
【问题讨论】:
-
"我不希望任何人在不登录的情况下执行此 api。"我不明白你的意思。获取 JWT 是通过登录过程。您是否尝试使用多个身份验证层?或者询问如何验证用户是他们所说的身份,从而可以安全地获得识别他们的 JWT(这个问题会非常广泛)?
-
我的意思是我的 API 可以被任何人访问,所以如果我有一个删除方法,任何人都可以在不登录/生成 JWT 的情况下执行此操作。
-
你可以使用JWT认证中间件:github.com/tuupola/slim-jwt-auth
-
非常感谢先生。它有效。