ホームページ バックエンド開発 Golang Beego の権限制御 - Web アプリケーションをより安全にします

Beego の権限制御 - Web アプリケーションをより安全にします

Jun 23, 2023 pm 01:09 PM
安全性 権限制御 beego

Beego は Go 言語をベースにした Web フレームワークで、効率的で安全な Web アプリケーションを開発するための便利で高速なツールを提供します。 Web アプリケーションを開発する場合、セキュリティは非常に重要な側面です。この記事では、Beego を使用してアクセス許可制御を実装し、Web アプリケーションを保護し、より安全にする方法を紹介します。

権限制御とは何ですか?

アクセス許可制御は、Web アプリケーションでユーザーを認証および許可するテクノロジーです。ユーザーが特定の機密ページにアクセスしたり、データの追加、変更、削除などの特定の機密操作を実行したりすることを制限できます。アクセス許可制御は、権限のないユーザーによる望ましくないアクションの実行を防止して、Web アプリケーションのセキュリティを保護する方法です。一部の特に機密性の高い操作については、システム管理者やパワー ユーザーなど、特定のユーザー ロールからの承認が必要です。アクセス許可制御テクノロジを使用すると、この要件を Web アプリケーションに実装できます。

Beego の権限制御モジュール

Beego では、beego.Acl モジュールを使用して権限制御を実装できます。このモジュールは、ユーザーがアクセスできるさまざまなレベルのページとリソースを制御するためのさまざまなユーザー ロールを承認できる、マルチレベルの権限制御システムを提供します。これには次のような特徴があります。

  1. マルチレベルの権限制御: 一般ユーザーや管理者などのユーザー ロールのマルチレベル権限をサポートします。
  2. 使い方は簡単: アプリケーションでユーザー ロールと対応する権限を定義するだけで使用できます。
  3. コードとテンプレートの両方に適用: ユーザー権限はコードとテンプレートを通じて制御できます。
  4. 拡張性: 新しいユーザーの役割と権限を自由に定義できます。

Beego でのアクセス許可制御の実装

簡単な例を使用して、Beego を使用してアクセス許可制御を実装する方法を示します。管理者と一般ユーザーの 2 つの役割を持つユーザー情報管理システムがあるとします。管理者はユーザー情報の追加、変更、削除が可能ですが、一般ユーザーは情報の閲覧のみが可能です。

まず、アプリケーションの初期化コードでユーザーの役割、権限、認可を定義する必要があります。 Beego の Init 関数を通じて定義されます。コードは次のとおりです。

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")
}
ログイン後にコピー

このコードでは、管理者と通常の 2 つのユーザー ロールを定義します。また、リソース、ユーザー情報 (/admin/user) を定義し、そのアクセス方法 (GET、POST、DELETE) を制限しました。次に、adminとnormalにそれぞれ対応するロールを設定し、権限を与えます。管理者ロールにはユーザー情報リソースに対する完全な権限を付与できますが、通常のロールがリソースに対して POST および DELETE リクエストを行うことは禁止されています。ここでは、# 記号を使用して完全な権限を示します。

次に、コントローラーで Beego の AC インターフェイスを使用して、ユーザーの権限を制御します。コードは次のとおりです。

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"
    }
}
ログイン後にコピー

実際、コントローラーは beego.ACLer インターフェイスを実装しているため、権限制御に beego.Acl を直接使用できます。この例では、現在のユーザーが適切な権限を持っているかどうかを確認します。現在のユーザーが管理者ロールを持っている場合は、/api/user/ へのアクセスを許可します。それ以外の場合は、エラー メッセージが返されます。

最後に、対応するテンプレート (user.tpl など) で権限の判断をレンダリングする必要があります。コードは次のとおりです。

{{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}}
ログイン後にコピー

この例では、beego.Acl.HasPermission 関数を使用して、現在のユーザーに POST または DELETE 操作のアクセス許可があるかどうかを確認します。存在する場合、対応するアクション ボタンが表示されます。テンプレートで ac 関数を使用するには、現在のユーザーのユーザー名をコントローラーで渡す必要があることに注意してください。

概要

この例では、Beego を使用してアクセス許可制御を実装し、Web アプリケーションを保護し、より安全にする方法を示します。 Beego は、ユーザーの役割、権限、承認を簡単に定義し、コントローラーやテンプレートで使用できるようにする、非常にシンプルで使いやすい API を提供します。もちろん、これは単なる例であり、実際のニーズに応じて使用できます。

以上がBeego の権限制御 - Web アプリケーションをより安全にしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows11セキュリティセンターをオフにする方法を詳しく解説 Windows11セキュリティセンターをオフにする方法を詳しく解説 Mar 27, 2024 pm 03:27 PM

Windows 11 オペレーティング システムでは、セキュリティ センターは、ユーザーがシステムのセキュリティ状態を監視し、マルウェアから防御し、個人のプライバシーを保護するのに役立つ重要な機能です。ただし、特定のソフトウェアをインストールするときやシステム チューニングを実行するときなど、ユーザーがセキュリティ センターを一時的にオフにする必要がある場合があります。この記事では、システムを正しく安全に運用するために、Windows 11 セキュリティ センターをオフにする方法を詳しく紹介します。 1. Windows 11 セキュリティ センターをオフにする方法 Windows 11 では、セキュリティ センターをオフにしても、

Windows セキュリティ センターでリアルタイム保護をオフにする方法の詳細な説明 Windows セキュリティ センターでリアルタイム保護をオフにする方法の詳細な説明 Mar 27, 2024 pm 02:30 PM

Windows オペレーティング システムは、世界で最も多くのユーザーを抱えるオペレーティング システムの 1 つとして、常にユーザーに支持されています。ただし、Windows システムを使用する場合、ユーザーはウイルス攻撃、マルウェア、その他の脅威など、多くのセキュリティ リスクに遭遇する可能性があります。システム セキュリティを強化するために、Windows システムには多くのセキュリティ保護メカニズムが組み込まれています。その 1 つが Windows セキュリティ センターのリアルタイム保護機能です。今回はWindowsセキュリティセンターのリアルタイム保護をオフにする方法を詳しく紹介します。まず、しましょう

Go 言語開発の要点: 5 つの人気のあるフレームワークの推奨事項 Go 言語開発の要点: 5 つの人気のあるフレームワークの推奨事項 Mar 24, 2024 pm 01:15 PM

「Go 言語開発の要点: 5 つの人気フレームワークの推奨事項」 高速で効率的なプログラミング言語として、Go 言語はますます多くの開発者に好まれています。開発効率を向上させ、コード構造を最適化するために、多くの開発者はフレームワークを使用してアプリケーションを迅速に構築することを選択します。 Go 言語の世界には、選択できる優れたフレームワークが数多くあります。この記事では、5 つの人気のある Go 言語フレームワークを紹介し、読者がこれらのフレームワークをよりよく理解して使用できるように、具体的なコード例を示します。 1.GinGin は高速な軽量 Web フレームワークです。

Windows セキュリティ センターでリアルタイム保護をオフにするためのヒント Windows セキュリティ センターでリアルタイム保護をオフにするためのヒント Mar 27, 2024 pm 10:09 PM

今日のデジタル社会において、コンピューターは私たちの生活に欠かせないものとなっています。 Windows は最も人気のあるオペレーティング システムの 1 つとして、世界中で広く使用されています。しかし、ネットワーク攻撃手法がエスカレートし続けるにつれ、パーソナル コンピュータのセキュリティを保護することが特に重要になってきています。 Windows オペレーティング システムは一連のセキュリティ機能を提供しますが、その重要なコンポーネントの 1 つが「Windows セキュリティ センター」です。 Windows システムでは、「Windows セキュリティ センター」が役に立ちます。

Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Java フレームワークのセキュリティ アーキテクチャ設計は、ビジネス ニーズとどのようにバランスをとる必要がありますか? Jun 04, 2024 pm 02:53 PM

Java フレームワーク設計では、セキュリティ ニーズとビジネス ニーズのバランスをとることでセキュリティを実現し、主要なビジネス ニーズを特定し、関連するセキュリティ要件に優先順位を付けます。柔軟なセキュリティ戦略を策定し、脅威に階層的に対応し、定期的に調整します。アーキテクチャの柔軟性を考慮し、ビジネスの進化をサポートし、抽象的なセキュリティ機能を考慮します。効率と可用性を優先し、セキュリティ対策を最適化し、可視性を向上させます。

PHP マイクロフレームワーク: Slim と Phalcon のセキュリティに関する議論 PHP マイクロフレームワーク: Slim と Phalcon のセキュリティに関する議論 Jun 04, 2024 am 09:28 AM

PHP マイクロフレームワークにおける Slim と Phalcon のセキュリティ比較では、Phalcon には CSRF および XSS 保護、フォーム検証などのセキュリティ機能が組み込まれていますが、Slim にはすぐに使用できるセキュリティ機能がなく、手動で実装する必要があります。セキュリティ対策。セキュリティ クリティカルなアプリケーションの場合、Phalcon はより包括的な保護を提供するため、より良い選択肢となります。

Struts 2 フレームワークのセキュリティ構成と強化 Struts 2 フレームワークのセキュリティ構成と強化 May 31, 2024 pm 10:53 PM

Struts2 アプリケーションを保護するには、次のセキュリティ構成を使用できます。 未使用の機能を無効にする コンテンツ タイプ チェックを有効にする 入力を検証する セキュリティ トークンを有効にする CSRF 攻撃を防ぐ RBAC を使用してロールベースのアクセスを制限する

AI の新たな世界の課題: セキュリティとプライバシーはどうなったのでしょうか? AI の新たな世界の課題: セキュリティとプライバシーはどうなったのでしょうか? Mar 31, 2024 pm 06:46 PM

生成 AI の急速な発展により、プライバシーとセキュリティに関して前例のない課題が生じ、規制介入が緊急に求められています。先週、私はワシントン D.C. で一部の議員およびそのスタッフと AI のセキュリティ関連の影響について話し合う機会がありました。今日の生成 AI は、基礎研究、潜在的な可能性、学術的用途を備えた 1980 年代後半のインターネットを思い出させますが、まだ一般向けの準備は整っていません。今回は、マイナーリーグのベンチャーキャピタルによって刺激され、Twitter のエコーチェンバーに触発された、野放しのベンダーの野心が、AI の「すばらしい新世界」を急速に前進させています。 「パブリック」基本モデルには欠陥があり、消費者および商用利用には適さない; プライバシー抽象化が存在する場合、ふるいのように漏洩する; 攻撃対象領域のためセキュリティ構造は重要である

See all articles