Beego est un framework web basé sur le langage Go. Il fournit des outils pratiques et rapides pour développer des applications web efficaces et sécurisées. La sécurité est un aspect très important lors du développement d’applications Web. Cet article explique comment utiliser Beego pour mettre en œuvre un contrôle des autorisations afin de protéger votre application Web et de la rendre plus sécurisée.
Qu'est-ce que le contrôle des autorisations ?
Le contrôle des autorisations est une technologie permettant d'authentifier et d'autoriser les utilisateurs dans les applications Web. Il peut empêcher les utilisateurs d'accéder à certaines pages sensibles ou d'effectuer certaines opérations sensibles, telles que l'ajout, la modification ou la suppression de données. Le contrôle des autorisations est un moyen de protéger la sécurité des applications Web en empêchant les utilisateurs non autorisés d'entreprendre des actions indésirables. Pour certaines opérations particulièrement sensibles, l'autorisation d'un rôle d'utilisateur spécifique est requise pour effectuer l'opération, tel qu'administrateur système ou utilisateur expérimenté. La technologie de contrôle des autorisations vous permet d'implémenter cette exigence dans les applications Web.
Module de contrôle des autorisations dans Beego
Dans Beego, vous pouvez utiliser le module beego.Acl pour implémenter le contrôle des autorisations. Ce module fournit un système de contrôle des autorisations à plusieurs niveaux qui vous permet d'autoriser différents rôles d'utilisateur pour contrôler les différents niveaux de pages et de ressources auxquels les utilisateurs peuvent accéder. Il possède les fonctionnalités suivantes :
Implémentation du contrôle des autorisations dans Beego
Utilisons un exemple simple pour montrer comment utiliser Beego pour implémenter le contrôle des autorisations. Supposons que nous ayons un système de gestion des informations utilisateur avec deux rôles : administrateur et utilisateur ordinaire. Les administrateurs peuvent ajouter, modifier et supprimer des informations utilisateur, tandis que les utilisateurs ordinaires ne peuvent afficher que les informations.
Tout d'abord, nous devons définir les rôles des utilisateurs, les autorisations et l'autorisation dans le code d'initialisation de l'application. Défini via la fonction Init de Beego. Le code est le suivant :
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") }
Dans ce code, nous définissons deux rôles d'utilisateur : admin et normal. Nous avons également défini une ressource, des informations utilisateur (/admin/user) et restreint ses méthodes d'accès : GET, POST et DELETE. Ensuite, nous définissons les rôles correspondants pour admin et normal respectivement, puis nous les autorisons. Nous autorisons le rôle d'administrateur à disposer d'autorisations complètes sur les ressources d'informations utilisateur, mais interdisons au rôle normal d'effectuer des requêtes POST et DELETE pour les ressources. Ici, nous avons utilisé le symbole *
pour indiquer que vous disposez de toutes les autorisations.
Ensuite, utilisez l'interface ac de Beego dans notre contrôleur pour contrôler les autorisations des utilisateurs. Le code est le suivant :
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" } }
En fait, le Controller implémente l'interface beego.ACLer, vous pouvez donc directement utiliser beego.Acl pour le contrôle des autorisations. Dans cet exemple, nous vérifions si l'utilisateur actuel dispose des autorisations appropriées. Si l'utilisateur actuel a le rôle d'administrateur, autorisez-le à accéder à /api/user/, sinon renvoyez un message d'erreur.
Enfin, nous devons rendre le jugement d'autorisation dans le modèle correspondant (tel que user.tpl). Le code est le suivant :
{{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}}
Dans cet exemple, nous utilisons la fonction beego.Acl.HasPermission pour vérifier si l'utilisateur actuel a l'autorisation d'accès pour les opérations POST ou DELETE. Si c’est le cas, le bouton d’action correspondant est rendu. Notez que l'utilisation de la fonction ac dans le modèle nécessite de transmettre le nom d'utilisateur de l'utilisateur actuel dans le contrôleur.
Résumé
Dans cet exemple, nous montrons comment utiliser Beego pour implémenter le contrôle des autorisations afin de protéger notre application Web et de la rendre plus sécurisée. Beego fournit une API très simple et facile à utiliser qui vous permet de définir facilement les rôles, autorisations et autorisations des utilisateurs et de les utiliser dans vos contrôleurs et modèles. Bien entendu, ce n’est qu’un exemple simple, vous pouvez l’utiliser en fonction de vos besoins réels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!