ホームページ  >  記事  >  バックエンド開発  >  phpGACL中国語マニュアル (8)

phpGACL中国語マニュアル (8)

WBOY
WBOYオリジナル
2016-06-13 13:04:02949ブラウズ

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 では、権限オブジェクトの「セクション」と「値」を関数パラメータで個別に指定する必要があります (通常、権限オブジェクトのタイプはパラメータの説明で明確に指定されません)

たとえば アコ オブジェクトの「セクション > 値"

  • " フロア > 1階
  • " フロア > 2階
  • " 部屋 > エンジンルーム

たとえば ARO オブジェクトのセクション > 値"

" >ジョン・スミス"

" >キャシー・ジョーンズ"

" ホスト >sandbox.something.com"

たとえば API の使用法:

  • acl_check ( aco_section, aco_value, aro_section, aro_value);

  • acl_check ( 'フロア', '2nd', 'ピープル', 'John_Smith' );

法的な名前制限の例:

  • 「ACO - フロブ > フレール」、「ARO - フロブ > フレール」 (セクションと値は同じですが、名前空間が権限オブジェクトの種類によって分離されているため、この名前付けは正当です)
  • 「ACO - フロブ > フレール」、「ACO - フロブ > クイーグル」 (権限オブジェクトの種類とセクション名は同じですが、値の名前が異なるため、この名前は正当です。
  • 「AXO - Frob Hrung > Flerg」 (セクション名には を含めることができます) スペース)

不正な名前制限の例:

  • 「ACO - フロブ > フレール」、「ACO - フロブ > フレール」 ("権限オブジェクトの種類 - 祭り名 > 値の名前は一意である必要があります)
  • 「ACO - フロブ > フレールの習慣」 (値名にはスペースを含めることはできません)

セクションを追加

新しい権限オブジェクトを追加する前に、そのセクション名を追加しておく必要があります。新しいセクション名を追加するには、 を使用します。 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 型戦闘機" [ 許可: 「部屋 > エンジンルーム ] 同じです、全く意味がありません!このようなエラーを処理しやすくするために、適切なセクション名を使用すると、このような権限オブジェクトがより明確になります。これは管理者にとって明らかなはずです。船に部屋へのアクセスを割り当てることは意味がありません。

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