ホームページ >バックエンド開発 >Golang >JWT はクレームの有効性とエラーをどのように解決しますか?

JWT はクレームの有効性とエラーをどのように解決しますか?

王林
王林転載
2024-02-06 11:12:03474ブラウズ

JWT 如何解析声明有效性和错误?

質問内容

アクセス、リフレッシュトークンのロジックを作成しているのですが、アクセストークンが有効かどうか(編集されていないか)を確認したいのですが、期限切れ。トークンの有効期限が切れると、Go はエラーを返し、トークンを無効にします。そこで、指定されたエラーが ErrTokenExpired と一致するかどうかを確認します。

トークンが無効な場合、err がゼロにならないことを 100% 確信できるので、if !tkn.Valid{... を削除できますか?

これは一般的に良いアプローチですか? それとも、編集されたトークンは検証に合格しますか?

リーリー
func VerifyJWT(jwtString, secret string) (*jwt.Token, *Claims, error) {
    claims := &Claims{}
    tkn, err := jwt.ParseWithClaims(jwtString, claims, func(token *jwt.Token) (interface{}, error) {
        return []byte(os.Getenv(secret)), nil
    })
    return tkn, claims, err
}

正解


コード内に 2 つのポイントがある場合、jwt トークンは安全です:

1-適切なアルゴリズムを選択する
2- ランダムキーを作成します

トークンが変更されるかタイムアウトになる場合は、次の 2 つのオプションが役に立ちます。VerifyJWTエラーを返します。

注: 常にエラーをチェックし、クライアントに適切な応答を返す必要があります。

注 (コードを改善): エラーが ErrTokenExpired かどうかを確認するには、errors パッケージを使用します。

あなたの例:

リーリー

以上がJWT はクレームの有効性とエラーをどのように解決しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。