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:
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") }
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" } }
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}}
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!