2

我正在使用 JWT 网络令牌系统。我能够成功生成 TOKENS。我在 Laravel 中创建 JWT 令牌如下

我正在使用以下技术堆栈

示例代码

use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;

class AuthenticateController extends Controller
{
    public function authenticate(Request $request)
    {
        // grab credentials from the request
        $credentials = $request->only('email', 'password');

        try {
            // attempt to verify the credentials and create a token for the user
            if (! $token = JWTAuth::attempt($credentials)) {
                return response()->json(['error' => 'invalid_credentials'], 401);
            }
        } catch (JWTException $e) {
            // something went wrong whilst attempting to encode the token
            return response()->json(['error' => 'could_not_create_token'], 500);
        }

        // all good so return the token
        return response()->json(compact('token'));
    }
}

样本输出

我越来越

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

问题 1

生成的令牌是唯一的吗?

4

2 回答 2

4

JWT 的独特之处在于没有两个相同的用户可以为他们生成相同的令牌

于 2016-04-14T06:15:00.317 回答
3

一般来说,JWT 实际上是在替换用户名和密码的组合。这意味着,在用户第一次登录时,服务器将在验证凭据正确后返回一个唯一令牌,而不是为每个受限资源请求发送用户名和密码。之后,每个请求都将包含令牌,该令牌将在完成请求之前检查是否有效。

因此,如果两个用户进来并使用两个有效凭据登录,它将从服务器收到两个不同的令牌。

于 2016-04-14T06:08:48.367 回答