phpGACL 中国語マニュアル (8)
phpGACL システムは 2 つのキーワードの組み合わせを使用して、各権限オブジェクトを一意に識別します ( ARO 、 AXO または アコ オブジェクト)、これは権限オブジェクト タイプです。
タプル (権限オブジェクトのタイプ、セクション、値) の形式で権限オブジェクトを一意に識別します。
最初のタプル要素は権限オブジェクト タイプ ( ARO 、 AXO または アコ )。
タプルの 2 番目の要素はセクションと呼ばれ、アクセス許可オブジェクトの共通クラスに名前を付けるユーザー定義の文字列です。複数の権限オブジェクトが同じセクション名を共有できます。セクション名は短いですが、ユーザー インターフェイスの選択ボックスでよく使用されるため、あまり長く定義しないでください。
セクションはユニット名前空間に保存され、グループのようにネストすることはできません。グループでのお祭り/ ARO/AXO ツリーは何も行いません。多数の権限オブジェクトを維持するために存在するだけです。
タプルの 3 番目の要素は value と呼ばれ、ユーザー定義の権限オブジェクトの名前です。値にはスペースを含めることはできません。 (そして結び目も可能です)。
セクションと値では大文字と小文字が区別されます。
別の: アクセス許可オブジェクトの識別に、高速に見える整数ではなく文字列を使用する理由は次の例からわかるように、 を使用するためです。
acl_check('system', 'login', 'users', 'john_doe');
との比較
:
acl_check(10, 21004, 15, 20304);
さらに分かりやすくなりました。
コンテキストによって、指定するアクセス許可オブジェクトのタイプが非常に明確になるため、 phpGACL (およびこのドキュメント) は、権限オブジェクト名を表示するときに権限オブジェクト タイプを削除し、「」のみを使用します セクション > 値" フォーマットの準備ができました。そしてでは API では、権限オブジェクトの「セクション」と「値」を関数パラメータで個別に指定する必要があります (通常、権限オブジェクトのタイプはパラメータの説明で明確に指定されません)
たとえば アコ オブジェクトの「セクション」 > 値"
たとえば ARO オブジェクトのセクション > 値"
" 人 >ジョン・スミス"
" 人 >キャシー・ジョーンズ"
" ホスト >sandbox.something.com"
たとえば API の使用法:
acl_check ( aco_section, aco_value, aro_section, aro_value);
acl_check ( 'フロア', '2nd', 'ピープル', 'John_Smith' );
法的な名前制限の例:
不正な名前制限の例:
新しい権限オブジェクトを追加する前に、そのセクション名を追加しておく必要があります。新しいセクション名を追加するには、 を使用します。 add_object_section() 機能。
このセクションの目的を簡単に説明します (「」など) 建物のレベル )
セクション名 (「」など) フロア" )
は、ユーザー インターフェイス にセクションが表示される順序を示す任意の値です。
は、セクションがユーザー インターフェイスに表示されるかどうかを示します ( の場合) 本当 は非表示になることを意味します)。
権限オブジェクトの種類 ( 「アコ」、「アロ」 または 「アクソ」 )
ハン
は
ARO
オブジェクトは、「人間」、「エイリアン」、「ロボット」の 3 つのセクションを作成します。フルネームで列挙してみましょう
ARO
オブジェクトのリスト。
デフォルト: すべて拒否
ミレニアム・ファルコンの乗客
§─
乗組員
[
許可: すべて
]
│§─「」
人間
> ハン
「
│§─「」
エイリアン
> チューイ
「[
拒否されました: エンジンルーム
]
│└─「」
人間
> ランド
「
§─
乗客
[
許可: ラウンジ
]
│§─
ジェダイ戦士
[
許可: タクシー
]
││§─「」
人間
> オビワン
「
││lux─「」
人間
> ルーク
「[
許可: 武器部屋
]
│§─「」
ロボット
>R2D2
「[
許可: エンジンルーム
]
│└─「」
ロボット
> C3PO
「
└─
エンジニア
[
許可: 機関室、兵器室
]
§─「」
人間
> ハン
「
§─「」
ロボット
> R2D2
「
└─「」
エイリアン
> ホントゥク
「
セクションは、ユーザー インターフェイスをより使いやすくするために権限オブジェクトを分類する単なる方法です。 acl_check() コードがより読みやすくなりました。 には影響しません phpGACL オブジェクトの権限を決定します。ネストすることはできません (したがって、「Humans」セクションの下に「Men」サブセクションを作成することはできません。「」というサブセクションを作成する必要があります) 人間-男性" セクション)
を使用する必要がある場合があります phpGACL 複数の異なる目的を達成します。たとえば、Web ページへのユーザーのアクセスを制限する必要がある場合や、サーバーへのリモート ホストのアクセスも制限する必要がある場合があります。 2 つのタスク間には関連性がありません。
phpGACL は、次の 3 つの異なる方法で処理できます。
で新しいものを作成できます phpGACL クラスに合格しました $gacl_options 配列はオプションを実装できます 1 (オプション の場合) 2 実装時と同じ)、この配列を使用すると、データベース名とフォーム名の接頭辞を指定できます。
$gacl_options = array(
'db_table_prefix' => 'gacl_',
'db_type' => 'mysql',
'db_host' => 'host1',
'db_user' => 'ユーザー',
'db_password' => 'passwd',
'db_name' => 'gacl');
?
$gacl_host1 = 新しい gacl($gacl_options);
オプションを実装するには 3、 非常に注意する必要があります。 phpGACL は異なるタスク間の関係を認識していないため、無効なアクセス許可ポリシーが生成される可能性があります。
例: ハン 他の船と自分の船のコンピューター間の接続を制限し、異なる部屋へのアクセス許可も制限したいと考えています。これを行うには、「」を追加するとよいでしょう。 ルーク の X 型戦闘機「長距離宇宙船として」 アロ オブジェクト (他の航空機を追加して、船のコンピューターを として使用することもできます) アコ オブジェクト)。全部のせいで アロ オブジェクトはすべて同じ場所にあります アロ ツリー、つまり を作成します APD 「船」のような > ルーク の X 型戦闘機" [ 許可: 「部屋 」 > エンジンルーム ] 同じです、全く意味がありません!このようなエラーを処理しやすくするために、適切なセクション名を使用すると、このような権限オブジェクトがより明確になります。これは管理者にとって明らかなはずです。船に部屋へのアクセスを割り当てることは意味がありません。