gpt4 book ai didi

android - JWT:slim v3 和 Android 中的身份验证

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:01 26 4
gpt4 key购买 nike

我正在使用 Slim 框架将 JSON 返回到我的 Android 设备。我目前正在我的设备上登录。我使用 3 种不同的方式登录:Facebook、Google 和帐户登录。当他进行帐户登录时,他可以注册一个新帐户或使用现有帐户登录。

为了我的 Web 服务的安全性,我想使用 JWT 安全性。所以我正在阅读和观看有关其工作原理的视频。我想我明白它是如何工作的,但我找不到任何关于如何正确实现它的信息。

我使用的 slim v3 中间件叫做:Slim-JWT-Auth .我找到了 following link在我的 slim 框架中实现它,我认为它工作正常。

现在我的问题:

  1. 如何生成我的 token ?
  2. 我什么时候生成 token ?
  3. 使用 Google 或 Facebook 登录时是否还需要 token ?因为他们已经使用了 Auth2.0 token ?

我知道它是如何工作的,但没有人在谈论何时以及如何实现它。那么我什么时候需要生成 token (在登录 web 服务时?),我是否需要在每次启动应用程序后生成 token ,还是只需要等到 token 过期?

最佳答案

如何生成我的 token ?

因为中间件已经包含firebase/php-jwt您可以使用它来生成 token 的库。

$now = new DateTime();
$future = new DateTime("now +2 hours");
$server = $request->getServerParams();
$payload = [
"iat" => $now->getTimeStamp(),
"exp" => $future->getTimeStamp(),
"sub" => $server["PHP_AUTH_USER"]
];

$secret = "supersecretkeyyoushouldnotcommittogithub";
$token = JWT::encode($payload, $secret, "HS256");

我什么时候生成 token ?

例如,在您的 api 中,您可以包含一个返回 token 的受密码保护的路由。除 /token 之外的所有其他路由都经过 JWT 身份验证。客户端可以在每个请求中请求 token ,或者总是在旧 token 过期之前请求 token 。

$app->add(new \Slim\Middleware\HttpBasicAuthentication([
"path" => "/token",
"users" => [
"test" => "test"
]
]);

$app->add(new \Slim\Middleware\JwtAuthentication([
"secret" => "supersecretkeyyoushouldnotcommittogithub"
"rules" => [
new RequestPathRule([
"path" => "/",
"passthrough" => ["/token"]
])
]
]);

$app->post("/token", function ($request, $response, $arguments) {

$now = new DateTime();
$future = new DateTime("now +2 hours");
$server = $request->getServerParams();

$payload = [
"iat" => $now->getTimeStamp(),
"exp" => $future->getTimeStamp(),
"sub" => $server["PHP_AUTH_USER"],
];
$secret = "supersecretkeyyoushouldnotcommittogithub";
$token = JWT::encode($payload, $secret, "HS256");
$data["status"] = "ok";
$data["token"] = $token;

return $response->withStatus(201)
->withHeader("Content-Type", "application/json")
->write(json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
});

使用 Google 或 Facebook 登录时是否还需要 token ?因为他们已经使用了 Auth2.0 token ?

这个问题没有明确的答案。这取决于”。例如,您可以使用 Facebook 或 Google 验证您的 /token 路由,并从那里返回您自己的 JWT token 。

有一项正在进行的工作更详细example implementation您可能想要检查以上所有内容。

关于android - JWT:slim v3 和 Android 中的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com