私が取り組んでいる現在のプロジェクトはWebアプリケーションであり、それぞれのサーバーで複数の顧客に配信する必要があります。Webサイトには、ユーザーが使用できる領域と使用できない領域と機能を管理する許可制御システムが必要です。
ご存知のように、私はデータベースに保存されたアクセス許可を使用して、データベース駆動型のアクセス許可システムを設計しています。すべてのユーザーには役割があります。ロールは、使用可能なリスト権限を定義します。スキーマは次のようになります。
ユーザーテーブル
1.user_id2
.名前
3.role_id
ロールテーブル
1.role_id2
.名前
権限テーブル
1.permission_id2
.名前
roles_permissionsテーブル:
1。role_id
2.permission_id
コードでは、ログに記録されたユーザーの役割と権限を取得し、ユーザーがアクションを実行できるかどうか、または次のような領域を表示できるかどうかを確認します。
if($user->hasPermission('Edit HR')) {
// let user see the editing HR section
}
hasPermissionは、ユーザーが「Edit HR」という名前の権限を持っているかどうかを確認し、必要な結果を返します。私が見ている問題は、データベーステーブルに「Edit_hr」や「HREditing」ではなく「EditHR」という名前のパーミッションレコードが必要なことです。したがって、アクセス許可システムのデータが、アプリケーションが使用しているすべてのデータベースで同じであることを確認する必要があります。これは欠陥のある設計であり、再設計する必要があると私は思います。新しいセクションや機能を作成するには、すべてのデータベースを更新する必要があります。これも悲しいパンダです。
したがって、基本的に、問題は、データベース駆動型のアクセス許可システムを設計し、複数のデータベースでデータベースの整合性を維持するための最良の方法は何でしょうか。