Rumah > pembangunan bahagian belakang > Golang > Mengapa kod tersuai echo jwt saya tidak berfungsi?

Mengapa kod tersuai echo jwt saya tidak berfungsi?

WBOY
Lepaskan: 2024-02-08 22:50:34
ke hadapan
1216 orang telah melayarinya

为什么我的 echo jwt 自定义代码不起作用?

editor php Yuzai sering menerima soalan daripada pembaca, antara soalan biasa ialah tentang "Kenapa kod tersuai jwt gema saya tidak berfungsi?". Apabila menggunakan JWT (JSON Web Token), kadangkala kami menghadapi situasi di mana kod tersuai tidak berfungsi Ini mungkin disebabkan oleh beberapa masalah biasa. Dalam artikel ini, kami akan menjawab soalan ini secara terperinci dan menyediakan penyelesaian untuk membantu pembaca menyelesaikan masalah yang mengganggu mereka. Mari lihat!

Kandungan soalan

Saya menggunakan echo jwt untuk mengesahkan pengguna, saya menyesuaikannya sambil melihat manual tetapi ia tidak digunakan. Saya mahu dua perkara.

  1. Saya ingin melakukan semakan token tanpa kata kunci pembawa

  2. Saya ingin mengembalikan mesej ralat yang sesuai untuk kes di mana token tidak ditemui atau token tidak sah.

Bagaimana untuk mengubah suai kod di atas untuk mencapai kesan yang saya inginkan?

Saya baru mula belajar golang, sebarang nasihat amatlah dihargai

output := echojwt.JWT(&echojwt.Config{
        SigningKey:  []byte(key.EnvSecretKey),
        TokenLookup: "header:Authorization",
        ErrorHandler: func(c echo.Context, err error) error {
            if err != nil {
                return c.JSON(400, "custom error")
            }
            return nil
        },
    })
Salin selepas log masuk

Penyelesaian

Berikut adalah langkah-langkah yang boleh anda ikuti:

  1. Semakan token tanpa menggunakan kata kunci "pembawa": untuk ini anda Anda boleh menukar nilai tokenlookup daripada "header:authorization" kepada "pertanyaan: token". Ini akan membolehkan anda menghantar token sebagai pertanyaan parameter dan bukannya dalam pengepala.

  2. Kembalikan mesej ralat tersuai yang sesuai dengan situasi Token tidak ditemui atau tidak sah: Untuk melakukan ini, anda boleh Ubah suai fungsi pengendalian ralat

Berikut adalah contoh:

output := echojwt.JWT(&echojwt.Config{
     SigningKey:  []byte(key.EnvSecretKey),
     TokenLookup: "query:token",
     ErrorHandler: func(c echo.Context, err error) error {
         if err == jwt.ErrTokenNotFound {
             return c.JSON(http.StatusBadRequest, "token not found")
         }
         if ve, ok := err.(*jwt.ValidationError); ok {
             if ve.Errors&jwt.ValidationErrorMalformed != 0 {
                 return c.JSON(http.StatusBadRequest, "token is malformed")
             } else if ve.Errors&(jwt.ValidationErrorExpired|jwt.ValidationErrorNotValidYet) != 0 {
                 return c.JSON(http.StatusUnauthorized, "token is expired or not valid yet")
             } else {
                 return c.JSON(http.StatusBadRequest, "token is invalid")
             }
         }
         return nil
     },
 })
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa kod tersuai echo jwt saya tidak berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan