Heim >Backend-Entwicklung >Golang >Berechtigungskontrolle in Beego – macht Ihre Webanwendung sicherer
Beego ist ein Web-Framework, das auf der Go-Sprache basiert. Es bietet einige praktische und schnelle Tools zur Entwicklung effizienter und sicherer Webanwendungen. Sicherheit ist ein sehr wichtiger Aspekt bei der Entwicklung von Webanwendungen. In diesem Artikel erfahren Sie, wie Sie mit Beego die Berechtigungskontrolle implementieren, um Ihre Webanwendung zu schützen und sicherer zu machen.
Was ist Berechtigungskontrolle?
Berechtigungskontrolle ist eine Technologie zur Authentifizierung und Autorisierung von Benutzern in Webanwendungen. Es kann Benutzer daran hindern, auf bestimmte vertrauliche Seiten zuzugreifen oder bestimmte vertrauliche Vorgänge auszuführen, z. B. das Hinzufügen, Ändern oder Löschen von Daten. Die Berechtigungskontrolle ist eine Möglichkeit, die Sicherheit von Webanwendungen zu schützen, indem unbefugte Benutzer daran gehindert werden, unerwünschte Aktionen auszuführen. Für einige besonders sensible Vorgänge ist die Autorisierung durch eine bestimmte Benutzerrolle erforderlich, z. B. Systemadministrator oder Hauptbenutzer. Mithilfe der Berechtigungskontrolltechnologie können Sie diese Anforderung in Webanwendungen umsetzen.
Berechtigungskontrollmodul in Beego
In Beego können Sie das beego.Acl-Modul verwenden, um die Berechtigungskontrolle zu implementieren. Dieses Modul bietet ein mehrstufiges Berechtigungskontrollsystem, mit dem Sie verschiedene Benutzerrollen autorisieren können, um die verschiedenen Ebenen von Seiten und Ressourcen zu steuern, auf die Benutzer zugreifen können. Es verfügt über die folgenden Funktionen:
Implementierung der Berechtigungskontrolle in Beego
Lassen Sie uns anhand eines einfachen Beispiels demonstrieren, wie Sie Beego zur Implementierung der Berechtigungskontrolle verwenden. Angenommen, wir haben ein Benutzerinformationsverwaltungssystem mit zwei Rollen: Administrator und normaler Benutzer. Administratoren können Benutzerinformationen hinzufügen, ändern und löschen, während normale Benutzer Informationen nur anzeigen können.
Zuerst müssen wir Benutzerrollen, Berechtigungen und Autorisierung im Initialisierungscode der Anwendung definieren. Definiert durch die Init-Funktion von Beego. Der Code lautet wie folgt:
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") }
In diesem Code definieren wir zwei Benutzerrollen: Admin und Normal. Wir haben außerdem eine Ressource und Benutzerinformationen (/admin/user) definiert und deren Zugriffsmethoden eingeschränkt: GET, POST und DELETE. Als Nächstes legen wir die entsprechenden Rollen für „Administrator“ und „Normal“ fest und autorisieren sie anschließend. Wir gestatten der Administratorrolle volle Berechtigungen für Benutzerinformationsressourcen, verbieten der normalen Rolle jedoch, POST- und DELETE-Anfragen für Ressourcen zu stellen. Hier haben wir das *
-Symbol verwendet, um anzuzeigen, dass Sie über vollständige Berechtigungen verfügen.
Als nächstes verwenden Sie die AC-Schnittstelle von Beego in unserem Controller, um Benutzerberechtigungen zu steuern. Der Code lautet wie folgt:
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" } }
Tatsächlich implementiert der Controller die beego.ACLer-Schnittstelle, sodass Sie beego.Acl direkt zur Berechtigungssteuerung verwenden können. In diesem Beispiel prüfen wir, ob der aktuelle Benutzer über die entsprechenden Berechtigungen verfügt. Wenn der aktuelle Benutzer die Administratorrolle hat, erlauben Sie ihm den Zugriff auf /api/user/, andernfalls wird eine Fehlermeldung zurückgegeben.
Abschließend müssen wir das Berechtigungsurteil in der entsprechenden Vorlage (z. B. user.tpl) wiedergeben. Der Code lautet wie folgt:
{{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}}
In diesem Beispiel verwenden wir die Funktion beego.Acl.HasPermission, um zu prüfen, ob der aktuelle Benutzer Zugriffsberechtigungen für POST- oder DELETE-Vorgänge hat. Wenn dies der Fall ist, wird die entsprechende Aktionsschaltfläche gerendert. Beachten Sie, dass die Verwendung der ac-Funktion in der Vorlage die Übergabe des Benutzernamens (Benutzername) des aktuellen Benutzers im Controller erfordert.
Zusammenfassung
In diesem Beispiel zeigen wir, wie wir mit Beego die Berechtigungskontrolle implementieren, um unsere Webanwendung zu schützen und sicherer zu machen. Beego bietet eine sehr einfache und benutzerfreundliche API, mit der Sie Benutzerrollen, Berechtigungen und Berechtigungen einfach definieren und in Ihren Controllern und Vorlagen verwenden können. Dies ist natürlich nur ein einfaches Beispiel, Sie können es entsprechend Ihren tatsächlichen Anforderungen verwenden.
Das obige ist der detaillierte Inhalt vonBerechtigungskontrolle in Beego – macht Ihre Webanwendung sicherer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!