正如标题所说,我要问的是JWT是否是一个很好的补充,或者在这种情况下是否不需要或最好不要使用它们。我已经阅读了很多信息,但仍然无法给出完整的答案。
我正在考虑以下事项:
我的情况客户端:
我的服务器端情况:
我现在的操作方式:
对于“第一”和“第二”,我使用:
<?php
.
.
.
$token = bin2hex(random_bytes(32));
$stmt = $con->prepare("UPDATE accounts_table SET loggedin = 1, token = ? WHERE Username = ?");
$stmt->bind_param('ss', $token, $username);
$stmt->execute();
echo $token;
?>
对于“第三”,我正在使用:
<?php
.
.
.
$stmt = $con->prepare("SELECT * FROM accounts_table WHERE username= ? LIMIT 1");
$stmt->bind_param('s', $user);
$stmt->execute();
$result = $stmt->get_result();
$result = $result->fetch_array();
if ($token==$result['token'])
{in pseudo-code} tell the client that everything is ok
else
{in pseudo-code} tell the client that he is not allowed to use the app anymore.
?>
关于我之前写的内容。
从我从StackExchange和StackOverflow JWT的许多答案中所读到的内容来看,只要私钥没有被盗,JWT都是安全的。如果有什么我想念的,请告诉我。
根据我在有关JWT的文章中所读的内容(例如Why jwts suck as session tokens),它们将增加请求的大小,并增加每个请求所需的资源(CPU,RAM等)请求,因为它必须计算哈希值。我还阅读了有关HTTP / 2 hpack the silent killer feature of http的内容,该内容表明,由于压缩,增加大小无关紧要。
但是我仍然担心资源使用的增加,性能影响是否可以察觉?我不得不问这个问题,因为我不知道一种方法可以同时使用该应用来重现50个用户的情况。
由于登录检查用户是否未使用“ loggedin”标志登录,因此将不允许多重登录。如果您发现瑕疵,请告诉我。
我也阅读了有关会议的内容,但这是否需要?会改善我的处境还是一样?
谢谢。