Rumah pembangunan bahagian belakang Golang Penjelasan terperinci tentang kawalan kebenaran dan kawalan akses rangka kerja Gin

Penjelasan terperinci tentang kawalan kebenaran dan kawalan akses rangka kerja Gin

Jun 22, 2023 pm 01:40 PM
kawalan capaian Kawalan kebenaran ginframework

Rangka kerja Gin ialah rangka kerja Web ringan yang menggunakan mekanisme coroutine bahasa Go dan algoritma pemadanan penghalaan yang cekap untuk memproses permintaan HTTP dengan pantas. Pada masa yang sama, rangka kerja Gin juga menyediakan mekanisme perisian tengah yang berkuasa yang boleh melaksanakan kawalan kebenaran dan kawalan akses dengan mudah. Artikel ini akan memperkenalkan kawalan kebenaran dan mekanisme kawalan capaian rangka kerja Gin secara terperinci untuk membantu pembangun menguasai fungsi ini dengan lebih baik.

1. Mekanisme perisian tengah rangka kerja Gin

Sebelum memahami kawalan kebenaran dan mekanisme kawalan akses rangka kerja Gin, kita perlu terlebih dahulu memahami mekanisme perisian tengah rangka kerja Gin. Middleware merujuk kepada mekanisme yang pra-proses atau pasca-proses permintaan semasa pemprosesan permintaan. Middleware boleh memintas, menapis, mengubah suai dan operasi lain atas permintaan untuk mencapai pelbagai fungsi. Dalam rangka kerja Gin, middleware menggunakan kaedah pemprosesan yang serupa dengan model onion Pelbagai middleware boleh dipanggil dalam rantai untuk memproses permintaan beberapa kali. Rangka kerja Gin menyediakan dua cara untuk mentakrifkan middleware: middleware global dan middleware tempatan.

Perisian tengah global merujuk kepada perisian tengah yang ditakrifkan sebelum pendaftaran laluan dan boleh memproses semua permintaan. Perisian tengah global boleh ditakrifkan melalui fungsi Use(), contohnya:

router := gin.Default()
router.Use(AuthMiddleware())
Salin selepas log masuk

Kod ini mentakrifkan perisian pertengahan global AuthMiddleware(), yang akan memproses semua permintaan.

Perisian tengah separa merujuk kepada perisian tengah yang ditakrifkan selepas pendaftaran laluan, yang hanya memproses permintaan tertentu. Perisian tengah tempatan boleh ditakrifkan melalui fungsi Handlers() atau Handle(), contohnya:

router := gin.Default()
router.GET("/users", AuthMiddleware(), ListUsersHandler())
Salin selepas log masuk

Kod ini mentakrifkan fungsi pemprosesan penghalaan untuk permintaan GET dengan laluan "/users", dan juga menambah Middleware setempat AuthMiddleware(), middleware ini hanya memproses permintaan GET dengan laluan "/users".

2. Kawalan kebenaran rangka kerja Gin

Kawalan kebenaran merujuk kepada mengesahkan identiti pengguna dan menentukan sama ada pengguna mempunyai hak untuk melakukan operasi tertentu berdasarkan identiti pengguna. Rangka kerja Gin boleh melaksanakan kawalan kebenaran melalui mekanisme middleware. Secara umumnya, kawalan kebenaran perlu dikendalikan dalam perisian tengah global untuk memastikan semua permintaan disahkan. Berikut ialah contoh pelaksanaan kawalan kebenaran:

func AuthMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        token := c.GetHeader("Authorization")
        if token == "" {
            c.AbortWithStatus(http.StatusUnauthorized)
            return
        }

        // TODO: 对Token进行验证,判断用户是否有权限
        // ...

        c.Next()
    }
}
Salin selepas log masuk

Perisian tengah ini mula-mula memperoleh medan Kebenaran daripada pengepala permintaan Jika medan itu kosong, ia mengembalikan ralat 401 dan menamatkan pemprosesan permintaan. Kemudian Token disahkan untuk menentukan sama ada pengguna mempunyai kuasa untuk membuat permintaan. Akhir sekali, panggil fungsi c.Next() untuk meneruskan pemprosesan permintaan.

3. Kawalan akses rangka kerja Gin

Kawalan akses merujuk kepada menyekat pengguna dan mengawal akses mereka kepada sumber tertentu. Rangka kerja Gin boleh melaksanakan kawalan capaian melalui mekanisme perisian tengah. Kawalan akses boleh mengambil dua bentuk: senarai putih dan senarai hitam.

Senarai putih bermakna hanya pengguna tertentu sahaja dibenarkan mengakses sumber tertentu dan pengguna lain tidak dibenarkan mengakses. Senarai putih boleh ditakrifkan dalam perisian tengah tempatan untuk memproses permintaan tertentu. Contohnya:

func OnlyAdmin Middleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        user := c.MustGet("user").(*model.User)
        if user.Role != "admin" {
            c.AbortWithStatus(http.StatusForbidden)
            return
        }

        c.Next()
    }
}

router.GET("/admin", OnlyAdmin(), AdminPageHandler())
Salin selepas log masuk

Kod ini mentakrifkan fungsi pemprosesan penghalaan untuk permintaan GET dengan laluan "/admin", dan juga menambah middleware tempatan OnlyAdmin(). . Jika pengguna lain, kembalikan ralat 403 dan tamatkan pemprosesan permintaan.

Senarai hitam merujuk kepada melarang pengguna tertentu daripada mengakses sumber tertentu, manakala pengguna lain boleh mengaksesnya. Senarai hitam boleh ditakrifkan dalam perisian tengah global untuk memproses semua permintaan. Contohnya:

func BanlistMiddleware() gin.HandlerFunc {
    bannedUsers := []string{"user1", "user2", "user3"}

    return func(c *gin.Context) {
        user := c.MustGet("user").(*model.User)
        if contains(bannedUsers, user.Username) {
            c.AbortWithStatus(http.StatusForbidden)
            return
        }

        c.Next()
    }
}

router.Use(BanlistMiddleware())
Salin selepas log masuk

Kod ini mentakrifkan perisian pertengahan global BanlistMiddleware(), yang melarang akses oleh pengguna tertentu. Jika pengguna berada dalam senarai larangan, kembalikan ralat 403 dan tamatkan pemprosesan permintaan. Perisian tengah ini ditakrifkan sebelum pendaftaran laluan dan memproses semua permintaan.

4. Ringkasan

Mekanisme perisian tengah rangka kerja Gin sangat berkuasa dan boleh melaksanakan fungsi yang berbeza dengan mudah. Dalam artikel ini, kami mempelajari tentang kawalan kebenaran dan mekanisme kawalan capaian rangka kerja Gin, yang boleh membantu kami melindungi keselamatan aplikasi web dengan lebih baik. Sudah tentu, ini hanya asas kawalan kebenaran dan kawalan akses Dalam aplikasi sebenar, logik dan mekanisme keselamatan yang lebih kompleks diperlukan untuk melindungi keselamatan sistem.

Atas ialah kandungan terperinci Penjelasan terperinci tentang kawalan kebenaran dan kawalan akses rangka kerja Gin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara melaksanakan kawalan kebenaran dan pengurusan pengguna dalam uniapp Cara melaksanakan kawalan kebenaran dan pengurusan pengguna dalam uniapp Oct 20, 2023 am 11:15 AM

Bagaimana untuk melaksanakan kawalan kebenaran dan pengurusan pengguna dalam uniapp Dengan pembangunan aplikasi mudah alih, kawalan kebenaran dan pengurusan pengguna telah menjadi bahagian penting dalam pembangunan aplikasi. Dalam uniapp, kami boleh menggunakan beberapa kaedah praktikal untuk melaksanakan kedua-dua fungsi ini dan meningkatkan keselamatan dan pengalaman pengguna aplikasi. Artikel ini akan memperkenalkan cara untuk melaksanakan kawalan kebenaran dan pengurusan pengguna dalam uniapp, dan menyediakan beberapa contoh kod khusus untuk rujukan. 1. Kawalan Kebenaran Kawalan kebenaran merujuk kepada menetapkan kebenaran pengendalian yang berbeza untuk pengguna atau kumpulan pengguna yang berbeza dalam aplikasi untuk melindungi aplikasi.

Melaksanakan kebenaran pengguna dan kawalan akses menggunakan PHP dan SQLite Melaksanakan kebenaran pengguna dan kawalan akses menggunakan PHP dan SQLite Jul 29, 2023 pm 02:33 PM

Melaksanakan kebenaran pengguna dan kawalan akses menggunakan PHP dan SQLite Dalam aplikasi web moden, kebenaran pengguna dan kawalan akses adalah bahagian yang sangat penting. Dengan pengurusan kebenaran yang betul, anda boleh memastikan bahawa hanya pengguna yang diberi kuasa boleh mengakses halaman dan fungsi tertentu. Dalam artikel ini, kita akan belajar cara melaksanakan kebenaran pengguna asas dan kawalan akses menggunakan PHP dan SQLite. Pertama, kita perlu mencipta pangkalan data SQLite untuk menyimpan maklumat tentang pengguna dan kebenaran mereka. Berikut ialah struktur jadual pengguna ringkas dan jadual kebenaran

Cara menggunakan Vue untuk pengurusan kebenaran dan kawalan akses Cara menggunakan Vue untuk pengurusan kebenaran dan kawalan akses Aug 02, 2023 pm 09:01 PM

Cara menggunakan Vue untuk pengurusan kebenaran dan kawalan capaian Dalam aplikasi web moden, pengurusan kebenaran dan kawalan capaian ialah ciri kritikal. Sebagai rangka kerja JavaScript yang popular, Vue menyediakan cara yang mudah dan fleksibel untuk melaksanakan pengurusan kebenaran dan kawalan akses. Artikel ini akan memperkenalkan cara menggunakan Vue untuk melaksanakan pengurusan kebenaran asas dan fungsi kawalan akses, serta melampirkan contoh kod. Menentukan Peranan dan Kebenaran Sebelum anda bermula, anda perlu menentukan peranan dan kebenaran dalam aplikasi anda terlebih dahulu. Peranan ialah set kebenaran khusus, dan

Pengurusan pengguna dan kawalan kebenaran dalam Laravel: melaksanakan berbilang pengguna dan tugasan peranan Pengurusan pengguna dan kawalan kebenaran dalam Laravel: melaksanakan berbilang pengguna dan tugasan peranan Aug 12, 2023 pm 02:57 PM

Pengurusan pengguna dan kawalan kebenaran dalam Laravel: Melaksanakan tugasan berbilang pengguna dan peranan Pengenalan: Dalam aplikasi web moden, pengurusan pengguna dan kawalan kebenaran adalah salah satu fungsi yang sangat penting. Laravel, sebagai rangka kerja PHP yang popular, menyediakan alatan yang berkuasa dan fleksibel untuk melaksanakan kawalan kebenaran untuk berbilang pengguna dan tugasan peranan. Artikel ini akan memperkenalkan cara melaksanakan pengurusan pengguna dan fungsi kawalan kebenaran dalam Laravel, dan menyediakan contoh kod yang berkaitan. 1. Pemasangan dan konfigurasi Mula-mula, laksanakan pengurusan pengguna dalam Laravel

Amalan Terbaik untuk Ciri Keizinan Laravel: Cara Mengawal Kebenaran Pengguna dengan Betul Amalan Terbaik untuk Ciri Keizinan Laravel: Cara Mengawal Kebenaran Pengguna dengan Betul Nov 02, 2023 pm 12:32 PM

Amalan terbaik untuk fungsi kebenaran Laravel: Cara mengawal kebenaran pengguna dengan betul memerlukan contoh kod khusus Pengenalan: Laravel ialah rangka kerja PHP yang sangat berkuasa dan popular yang menyediakan banyak fungsi dan alatan untuk membantu kami membangunkan aplikasi web yang cekap dan selamat. Satu ciri penting ialah kawalan kebenaran, yang menyekat akses pengguna ke bahagian aplikasi yang berbeza berdasarkan peranan dan kebenaran mereka. Kawalan kebenaran yang betul ialah komponen utama mana-mana aplikasi web untuk melindungi data dan fungsi sensitif daripada capaian yang tidak dibenarkan

Bagaimana Nginx melaksanakan konfigurasi kawalan akses berdasarkan IP sumber permintaan Bagaimana Nginx melaksanakan konfigurasi kawalan akses berdasarkan IP sumber permintaan Nov 08, 2023 am 10:09 AM

Cara Nginx melaksanakan konfigurasi kawalan akses berdasarkan IP sumber permintaan memerlukan contoh kod khusus Dalam pembangunan aplikasi rangkaian, melindungi pelayan daripada serangan berniat jahat adalah langkah yang sangat penting. Menggunakan Nginx sebagai pelayan proksi terbalik, kami boleh mengkonfigurasi kawalan akses IP untuk menyekat akses kepada alamat IP tertentu untuk meningkatkan keselamatan pelayan. Artikel ini akan memperkenalkan cara melaksanakan konfigurasi kawalan akses berdasarkan IP sumber permintaan dalam Nginx dan memberikan contoh kod khusus. Pertama, kita perlu mengedit fail konfigurasi Nginx

Cara menggunakan ACL (Senarai Kawalan Akses) untuk kawalan kebenaran dalam Rangka Kerja Zend Cara menggunakan ACL (Senarai Kawalan Akses) untuk kawalan kebenaran dalam Rangka Kerja Zend Jul 29, 2023 am 09:24 AM

Cara menggunakan ACL (AccessControlList) untuk kawalan kebenaran dalam Rangka Kerja Zend Pengenalan: Dalam aplikasi web, kawalan kebenaran ialah fungsi penting. Ia memastikan bahawa pengguna hanya boleh mengakses halaman dan ciri yang dibenarkan untuk mereka akses dan menghalang akses yang tidak dibenarkan. Rangka kerja Zend menyediakan cara yang mudah untuk melaksanakan kawalan kebenaran, menggunakan komponen ACL (AccessControlList). Artikel ini akan memperkenalkan cara menggunakan ACL dalam Rangka Kerja Zend

Panduan Pembangunan PHP: Cara Melaksanakan Kawalan Akses Laman Web Panduan Pembangunan PHP: Cara Melaksanakan Kawalan Akses Laman Web Aug 18, 2023 pm 10:46 PM

Panduan Pembangunan PHP: Cara Melaksanakan Kawalan Akses Laman Web Semasa membangunkan tapak web, melindungi data pengguna dan memastikan keselamatan maklumat sensitif adalah penting. Kaedah biasa dan berkesan adalah untuk menyekat akses pengguna yang berbeza ke halaman yang berbeza melalui kawalan akses laman web. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan kawalan akses tapak web dan menyediakan beberapa contoh kod untuk membantu anda bermula dengan cepat. Langkah 1: Buat jadual pangkalan data Mula-mula, kita perlu mencipta jadual pangkalan data untuk menyimpan maklumat dan kebenaran pengguna. Di bawah adalah contoh MySQL

See all articles