sql >> データベース >  >> RDS >> Mysql

ユーザーアカウントの管理、役割、権限、認証PHPおよびMySQL

    あらゆる種類の情報の作成、読み取り、更新、削除を伴うウェブアプリケーションを構築している場合、データに対してこれらのさまざまな操作を実行する権限を、ユーザーのさまざまな役割に応じて共有する必要があるのは非常に一般的です。およびアプリケーションの権限。

    学校管理アプリケーションを例にとってみましょう。このようなアプリケーションのユーザーは通常、学生、教師、学部長(HOD)などのカテゴリに分類されます。アプリケーションでは、学生が学期試験の結果を追加または更新する特権を持つことを許可してはなりません。それが教師の役割です。また、新しいコースまたは科目をカリキュラムに追加する場合、そのコースをシステムに追加するのは部門長のみの作業です。

    このようなシステムでは、学生、教師、HOD(部門長)をさまざまな役割と呼ぶことができます。 私たちのアプリケーションで。生徒の成績の追加と更新、新しいコースの追加などのアクションについては、これらを権限と呼びます。

    これまでの説明から、ユーザーには1つのロールがあり、ロールには複数の権限があるとすでに推測できます。たとえば、ジョン(ユーザー)には1つの役割(学生)と複数の権限(コースの登録、マークの表示、トランスクリプトの印刷など)があります。

    つまり、MySQLデータベースでは、ユーザー、ロール、権限の3つの主要なデータベーステーブルが必要になります。ユーザーとロールデータベーステーブルの間には多対1の関係(1つのロールは多くのユーザーに属する)、およびロールと権限テーブルの間には多対多の関係(多くの権限を多くのロールに割り当てることができます)が必要です。 。

    これらの役割を参照する方法はあなた次第です。この例では、学校管理アプリケーションに関する例であるため、役割を表すためにStudent、Teacher、HODを使用しています。ホテル管理アプリケーションで作業している場合、役割はマネージャー、クリーナー、受付係などです。

    このチュートリアルでは、ブログアプリケーション用のユーザーアカウント管理システムを構築しています。したがって、これらの役割を作成者、編集者、および管理者と呼びます。もちろん、好きなように変更できますが、これら3つはコンテンツ管理システムのほぼ標準です。

    完全な管理者/ユーザー登録およびログインシステムが実装されます。すべてのユーザーは同じログインフォームからログインし、ログインすると、管理者ユーザー(作成者、編集者、管理者)のみが管理ダッシュボードにアクセスでき、通常のユーザーは公開ホームページにリダイレクトされます。

    権限をテストするために、データベースにpostsデータベーステーブルを作成します。たとえば、編集者の役割を持つユーザーは、すべての投稿を編集、更新、公開、非公開、削除できますが、作成者には、以前の投稿のみを作成、読み取り、更新、削除する権限しかありません。自分で作成しました。管理者には、他の管理ユーザーと役割を作成、更新、削除する権限と、役割への権限とユーザーへの役割の割り当て/割り当て解除を行う権限があります。

    注:完全なブログアプリケーションを最初から作成するためのチュートリアルはすでに作成しました。したがって、ここでは投稿の作成、削除、更新を実際には実装しません。これらの権限が投稿を回避する方法を示します。投稿を含むブログを作成する方法を学びたい場合は、PHPでブログを作成する方法に関する他のチュートリアルを確認してください。

    プロジェクトディレクトリ構造。

    user-accountsというプロジェクトフォルダを作成し、その中に他に3つのフォルダを作成します:admin、includes、assets、それぞれに次のサブフォルダがあります:

    admin:このフォルダーは、アプリケーションのadmin部分のソースコードを保持します。このフォルダに、投稿、役割、ユーザーの3つのフォルダを作成します。

    アセット:これは、画像、css、jsなどのブラウザによってアクセスされる公開ファイルを保持します。したがって、アセット内に、画像、css、およびjsフォルダーを作成します。

    含まれるもの:これは、アプリケーションのさまざまな場所に含めることができる、アプリケーションのソースコードのパッチを保持します。このフォルダ内に、レイアウトとロジックの2つのフォルダを作成します。

    この時点で、プロジェクト構造はすべて設定されています。これで、システムのコーディングを開始できます。これは、このチュートリアルの次のパートで行います。

    ご清聴ありがとうございました。次のパートでお会いできることを楽しみにしています。


    1. ClusterControl 1.7.4の発表:クラスター間レプリケーション-究極のディザスタリカバリ

    2. PythonでのMongoEngineによるインデックス作成の処理

    3. FILE_NAME()を使用して、SQLServerで指定されたファイルIDの論理ファイル名を返します

    4. HerokuPGダンプをローカルマシンにインポートする方法