Kawalan kebenaran dalam Beego - menjadikan aplikasi web anda lebih selamat

PHPz
Lepaskan: 2023-06-23 13:09:10
asal
1635 orang telah melayarinya

Beego ialah rangka kerja web berdasarkan bahasa Go Ia menyediakan beberapa alatan yang mudah dan pantas untuk membangunkan aplikasi web yang cekap dan selamat. Keselamatan adalah aspek yang sangat penting apabila membangunkan aplikasi web. Artikel ini akan memperkenalkan cara menggunakan Beego untuk melaksanakan kawalan kebenaran untuk melindungi aplikasi web anda dan menjadikannya lebih selamat.

Apakah itu kawalan kebenaran?

Kawalan kebenaran ialah teknologi yang mengesahkan dan membenarkan pengguna dalam aplikasi web. Ia boleh menyekat pengguna daripada mengakses halaman sensitif tertentu atau melakukan operasi sensitif tertentu, seperti menambah, mengubah suai atau memadam data. Kawalan kebenaran ialah satu cara untuk melindungi keselamatan aplikasi web dengan menghalang pengguna yang tidak dibenarkan daripada mengambil tindakan yang tidak diingini. Untuk beberapa operasi yang sangat sensitif, kebenaran daripada peranan pengguna tertentu diperlukan, seperti pentadbir sistem atau pengguna kuasa. Teknologi kawalan kebenaran membolehkan anda melaksanakan keperluan ini dalam aplikasi web.

Modul kawalan kebenaran dalam Beego

Dalam Beego, anda boleh menggunakan modul beego.Acl untuk melaksanakan kawalan kebenaran. Modul ini menyediakan sistem kawalan kebenaran berbilang peringkat yang membolehkan anda membenarkan peranan pengguna yang berbeza untuk mengawal tahap halaman dan sumber yang berbeza yang boleh diakses oleh pengguna. Ia mempunyai ciri berikut:

  1. Kawalan kebenaran berbilang peringkat: menyokong keizinan berbilang peringkat peranan pengguna, seperti pengguna biasa dan pentadbir.
  2. Mudah untuk digunakan: Hanya tentukan peranan pengguna dan kebenaran yang sepadan dalam aplikasi anda untuk menggunakannya.
  3. Digunakan pada kedua-dua kod dan templat: Kebenaran pengguna boleh dikawal melalui kod dan templat.
  4. Keterluasan: Peranan dan kebenaran pengguna baharu boleh ditakrifkan secara bebas.

Pelaksanaan kawalan kebenaran dalam Beego

Mari kita gunakan contoh mudah untuk menunjukkan cara menggunakan Beego untuk melaksanakan kawalan kebenaran. Katakan kita mempunyai sistem pengurusan maklumat pengguna dengan dua peranan: pentadbir dan pengguna biasa. Pentadbir boleh menambah, mengubah suai dan memadam maklumat pengguna, manakala pengguna biasa hanya boleh melihat maklumat.

Pertama, kita perlu menentukan peranan pengguna, kebenaran dan kebenaran dalam kod permulaan aplikasi. Ditakrifkan melalui fungsi Init Beego. Kodnya adalah seperti berikut:

func init() {
    //admin role
    beego.Acl.AddRole("admin")

    //normal role
    beego.Acl.AddRole("normal")

    //user info resource
    beego.Acl.AddResource("/admin/user", "GET", "POST", "DELETE")

    //set role auth
    beego.Acl.AddRoleForUser("admin", "admin")
    beego.Acl.AddRoleForUser("normal", "normal")

    //set auth for role and resource
    beego.Acl.Allow("admin", "/admin/user", "*")
    beego.Acl.Deny("normal", "/admin/user", "POST", "DELETE")
}
Salin selepas log masuk

Dalam kod ini, kami mentakrifkan dua peranan pengguna: pentadbir dan normal. Kami juga menentukan sumber, maklumat pengguna (/admin/pengguna), dan menyekat kaedah aksesnya: GET, POST dan DELETE. Seterusnya, kami menetapkan peranan yang sepadan untuk pentadbir dan normal masing-masing, dan kemudian membenarkannya. Kami membenarkan peranan pentadbir mempunyai kebenaran penuh pada sumber maklumat pengguna, tetapi melarang peranan biasa daripada membuat permintaan POST dan DELETE untuk sumber. Di sini, kami menggunakan simbol * untuk menunjukkan mempunyai kebenaran penuh.

Seterusnya, gunakan antara muka ac Beego dalam pengawal kami untuk mengawal kebenaran pengguna. Kodnya adalah seperti berikut:

func (c *UserController) List() {
    if beego.Acl.HasRole(c.GetSession("username").(string), "admin") {
        // get userlist
    } else {
        c.Data["error"] = "permission denied"
        c.TplName = "error.html"
    }
}

func (c *UserController) Add() {
    if beego.Acl.HasPermission(c.GetSession("username").(string), "/admin/user", "POST") {
        // add user
    } else {
        c.Data["error"] = "permission denied"
        c.TplName = "error.html"
    }
}

func (c *UserController) Delete() {
    if beego.Acl.HasPermission(c.GetSession("username").(string), "/admin/user", "DELETE") {
        // delete user
    } else {
        c.Data["error"] = "permission denied"
        c.TplName = "error.html"
    }
}
Salin selepas log masuk

Malah, Pengawal melaksanakan antara muka beego.ACLer, jadi anda boleh terus menggunakan beego.Acl untuk kawalan kebenaran. Dalam contoh ini, kami menyemak sama ada pengguna semasa mempunyai kebenaran yang sesuai. Jika pengguna semasa mempunyai peranan pentadbir, benarkan mereka mengakses /api/user/, jika tidak, kembalikan mesej ralat.

Akhir sekali, kami perlu memberikan pertimbangan kebenaran dalam templat yang sepadan (seperti user.tpl). Kodnya adalah seperti berikut:

{{if beego.Acl.HasPermission .username "/admin/user" "POST"}}
    <a href="#">Add User</a>
{{end}}

{{if beego.Acl.HasPermission .username "/admin/user" "DELETE"}}
    <a href="#">Delete User</a>
{{end}}
Salin selepas log masuk

Dalam contoh ini, kami menggunakan fungsi beego.Acl.HasPermission untuk menyemak sama ada pengguna semasa mempunyai kebenaran akses untuk operasi POST atau DELETE. Jika ada, butang tindakan yang sepadan dipaparkan. Ambil perhatian bahawa menggunakan fungsi ac dalam templat memerlukan menghantar nama pengguna pengguna semasa dalam pengawal.

Ringkasan

Dalam contoh ini, kami menunjukkan cara menggunakan Beego untuk melaksanakan kawalan kebenaran untuk melindungi aplikasi web kami dan menjadikannya lebih selamat. Beego menyediakan API yang sangat ringkas dan mudah digunakan yang membolehkan anda mentakrifkan peranan, kebenaran dan keizinan pengguna dengan mudah serta menggunakannya dalam pengawal dan templat anda. Sudah tentu, ini hanya contoh mudah, anda boleh menggunakannya mengikut keperluan sebenar anda.

Atas ialah kandungan terperinci Kawalan kebenaran dalam Beego - menjadikan aplikasi web anda lebih selamat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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