問題タブ [zend-acl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - ACLでリソースのツリーをどのように構成する必要がありますか?
PHPとZend_ACLを使用して、非常に柔軟な権限システムを作成したいと思います。特定のタイプのすべてのオブジェクトと、それらのオブジェクトのインスタンスにアクセス許可を割り当てられるようにしたい。オブジェクトの特定のインスタンスが照会され、それがリソースツリーに存在しない場合は、「generic」オブジェクトに設定された権限を使用できます。私の問題は、これをネストする必要があり、Zend_ACLがサポートしていない多重継承なしでそれを行う方法を理解できないことです。
例はこれです。学部、コース、イベントを備えたオンライン学習サイト。各イベントはコースに属し、各コースは教員に属します。各学部の役割がすべてのコース(および継承によるイベント)にアクセスできるようにしたいと思いますが、特定の学部はその資料を非公開にしたいと考えています。そのため、リソースツリーの構造に各学部のリソースノードを作成し、各コースにデフォルトのアクセス許可を与える汎用コースノードから分岐するのではなく、各学部に属する各コースを学部ノードから分岐させます。新しい構造で、一般的なコースの権限をどのように適用できますか?親コースが読み取り可能である場合にのみ各イベントを読み取り可能にしたいが、各イベントにデフォルトの権限セットを適用したい場合は、コースの下のイベントにも同じことが言えます。
別のシステムに関する質問、コメント、提案は大歓迎です。
zend-framework - Zend Framework: Zend_Acl_Resources の実装
Zend_Acl_Resources をどのように実装すればよいですか? 私は次のようなものを持っていますか:
コントローラーアクションで?どういうわけかもっと良い方法があると思います...しかし、それを考えることができません。
zend-framework - Zend-Framework: モジュールなしでこれを行うには?
申し訳ありませんが、これはかなり長い質問ですが、ここでいくつかの議論をしたいと思います。
私は zend を初めて使用し、モジュールの使用を避けようとしています。これは、zend のビューの側面は非常に柔軟であり、モジュールは余分なディレクトリと混乱を追加すると思うからです。しかし、私は一つのことを疑問に思っています。私が構築しているアプリはかなり大きく、実際にはアプリにモジュールの概念があります。
モジュールを使用すると、モジュールを独自のディレクトリに配置して、ビューとコントローラーを個別に配置できるなど、物事をより整理できることを私は知っています。
ただし、モジュールディレクトリを次の形式でシミュレートすることにしました
--lang/module(実際にはコントローラー)/controller(それがアクションです)/action(それが子アクションです)/other-params/--
この種のシミュレーションをどのように進め、行うか
私が持っている最初のアイデアは、アプリケーションに別のルートを追加して、4番目のパラメーターを子アクションとして取得することです。例えば
class some_controller extends extends Zend_Controller_Action{
そんな感じ。それは理にかなっていますか、それとも他のアプローチがあるかどうか?そして、このアプローチでは、「偽の子アクション」をリソースとして追加する方法として Zend_ACL をどのように統合するのでしょうか? ありがとうございました。
security - アクセス制御リストのベストプラクティス-ACL-サイトを攻撃するユーザーに負の役割を設定する
コンテクスト
ZendACLについて読んでいます http://framework.zend.com/manual/en/zend.acl.html
質問
1台のサーバーで3つのZendアプリケーションを実行しています。
- 私のフロントエンドアプリ
- 私のフロントエンド-メンバーアプリ
- 私のバックエンドアプリ(サイト所有者の管理者)
アプリケーション内で、2種類のACLを使用することを検討しています。
- アプリケーション全体のACL-「アプリACL」の権限は単に「アクセス」(または「読み取り」(または「SendHTTPRequests」)と呼ぶこともあります))
- アカウント全体-他のすべての権限を個々の「アカウントACL」に任せます
これにより、スパマーやその他の攻撃者をブロックしやすくなると思います
おそらく、次のようなルールがあります。
フロントエンドアプリのアクセス制御
- 名前=攻撃者
- 一意の権限=なし
- 権限の継承元=N/ A
- 名前=ゲスト
- 一意のアクセス許可=SendHTTPRequests
- 権限の継承元=N/ A
- 名前=メンバー
- 一意のアクセス許可=SendHTTPRequests
- 権限の継承元=ゲスト
- 名前=管理者
- 一意のアクセス許可=(すべてのアクセス許可)
- 権限の継承元=N/ A
他のアプリには、ゲストへのアクセスを拒否するためのより厳しいルールがあります。
したがって、答える質問は次のとおりです。
「攻撃者」の役割(否定的な役割)をユーザーに割り当てることは、賢明なことだと思いますか。
または、これは一般的なベストプラクティスに反しますか?
php - Zend_Acl は必要ですか?
Zend_Acl が必要かどうか確信が持てない役割ベースのパーミッション システムを持っているので、私が正しいかどうか尋ねたいと思います。
問題の Web アプリケーションには個別の管理画面がなく、すべてのコントローラー/アクションに誰でもアクセスできます。ですから、そのようなオープンなシステムで「リソース」と呼べるものを想像することはできません。
ただし、一部のユーザー ロールは、ユーザー ID でフィルタリングされていないグリッドを表示できます。そのため、スーパー管理者はすべてのデータを表示し、「x 管理者」はすべての「x」データを表示します。
この場合、Zend_acl システムは過剰ですか? それがなければ物事は簡単です.init()でユーザーロールを取得し、コントローラーの一部でそれをチェックするだけです.
php - データベース駆動型ナビゲーションのログイン/ログアウト リンク?
主に 2 つのテーブルで構成されるデータベース駆動型のナビゲーションがあります。これmenus
はmenu_items
、純粋に「静的」リンクではうまく機能しますが、動的リンク ( login/logout ) が必要です。
私menu_items
のテーブルは、管理者に手動で追加されたページへのリンクで構成されています。したがって、「動的」リンクを処理できるように、テーブルとモデルを調整する必要があります。
menu_items テーブルのスキーマは次のとおりです。
メニュー ID は別のテーブルに対応するため、たとえば 1 はプライマリ ナビゲーション、2 はユーティリティ ナビゲーションになります。位置とは、メニュー項目が表示される各メニューに対する相対的な順序を指します。リンクは、「/user/login」などの単なるフィールドです。
各メニューをループしてナビゲーション コンテナを作成し、Zend Navigation を使用しています。
ログイン領域に使用しているロジックは次のとおりです。これを移動して、ダイナミック ナビゲーションに組み込む必要があります。
メニュー項目ごとにアクセス レベルの新しい列を追加し、Menu モデルを更新して、ユーザーがログインしているかどうかを説明し、メニュー項目の新しいアクセス列の値、またはそれらに沿った何かをクエリする必要があるようです。行。誰にも提案はありますか?
zend-framework - Zend_Aclモジュラークラスシステム
やあみんな、私はZendから始めて、それがどのように機能するか(そこに到達する)を理解しようとしています。Aclクラスでは、人々はすべての役割とリソースを1つのファイルで宣言しているようです。個人が基本ユーザーとしてのみログインしている場合、またはサイトへのゲスト/訪問者としてログインしている場合でも、これはシステムリソースの無駄に思えます。そのため、現在のユーザーのロール/リソースに応じてロールを設定するさまざまなクラスを作成できるかどうかを考えていました。
私の現在のアイデアは、ブートストラップのロールでswitch / caseを使用し、ロール名に基づいて個々のAclクラスをロードすることです(たとえば、'visitor' =>'Model_VisitorAcl'、'users'=>'Model_UserAcl'および ' admin'=>' Model_AdminAcl')、それぞれに対応するクラスファイルがあります。次に、クラスファイル内でそれぞれに対して何かを行います。これは機能しており、現在、すべての「admin」ACLを1つに定義して(admin-user-visitorの権限階層をバックトラック)、「user」に「user」-「visitor」の役割とリソースを設定できます。
ただし、これは最善の方法ではないようです。「user」のロール権限を変更したい場合は、「user」と「admin」のロール権限を変更する必要があります。これは2つの役割では明らかに問題ではありませんが、より大きなシステムでは明らかに問題です。
だから私は次のようなものを試しました
Model_UserAcl構成関数を実行して、ロール'user'を設定しようとすると、これは機能しないようですが、「Uncaught exception'Zend_Acl_Role_Registry_Exception' with message'Parent Role id' users'doesnotexist'」エラーがスローされます。
では、次のステップは何ですか?モジュールごとに個別のインクルードファイルがあり、必要なクラスに必要に応じてインクルードファイルがありますか?
それとも、この問題でモグラの丘から山を作っているだけですか?
ありがとう、サイ
php - 実用的な Zend_ACL + Zend_Auth の実装とベスト プラクティス
環境:
私の質問は、SO とほぼ同じように開発しているフォーラムに関するものです。
- スレッドを表示するアクセス権はあるが、返信または投票できないゲスト
- 十分な担当者がいるメンバーは、他のスレッドを編集/投票でき、デフォルトで返信でき、ゲストと同じ権限を持ちます
- ほとんど何でもできる管理者
この ACL をサイト全体に適用し、デフォルトですべてのリソースを拒否したいと考えています。
Zend_Acl の使用の基本を読みました。つまり、基本的にロール (ゲスト、メンバー、管理者) を作成し、それらのロールに対してリソース (コントローラー、メソッド) を拒否または許可します。ドキュメントは、実際にアプリケーションに acl コードを実装する方法についてあまり具体的ではないため、SO を調べました。
問題に光を当てるmarekからの非常に便利なstackoverflowの回答に出くわしましたが、慣れていないため、ベストプラクティスを念頭に置いてこれを適切に実装する方法を完全に理解することはできません.
ポスターにはconfigAcl.php
、アプリケーション ルートに静的ファイルがあり、acl オブジェクトを初期化し、ロールを追加し、すべてのコントローラーからリソースを作成し、admin
すべてへnormal
のアクセスを許可し、管理者以外のすべてへのアクセスを許可し、後で使用するために acl オブジェクトをレジストリに保存します。 .
質問 #1 - このコードはブートストラップにあるべきですか、それともこのようなスタンドアロン ファイルにあるべきですか? もしそうなら、それが例えばライブラリディレクトリ内にある方が良いでしょうか?
その 2 番目の部分は、Zend Controller Plugin の抽象クラスを拡張した新しいクラスで、これにより にフックできるようになりますauth/login
。ロジックは基本的に、ログインに失敗した場合はリダイレクトします。それ以外の場合は、レジストリから acl オブジェクトを取得し、ID を取得します、およびユーザーがこのリソースを表示できるかどうかを決定します。
質問 #2 - 実際にユーザーの ID を返す認証プラグイン部分をどのように正確にコーディングしますか? 彼は、ユーザーIDと資格情報(ハッシュされたパスチェック)でデータベーステーブルの列を照会する認証アダプターdbテーブルオブジェクトを生成する以下のコードを持っていたことに気づきました。
users テーブルが次のデータで構成されているとしましょう。
レベル 3 = 管理者、2 = メンバー、1 = ゲスト。
質問 #3 - 上記の認証コードを配置するのに適切な場所はどこですか? ログインコントローラーの内部?
質問 #4 - 別の投稿者が、モデル内で acl ロジックを実行する方法についての記事で返信していますが、彼が使用する特定の方法はネイティブでサポートされておらず、回避策が必要です。これは実現可能ですか? そして、これは本当に理想的に行われるべき方法ですか?
zend-framework - ACL で異なるアプリケーション ドメインを表す方法は?
私は、さまざまなユーザー グループがリソースへのさまざまなアクセス権を持つ Web アプリケーションに取り組んでいます。これまでのところ特別なことはないと思いますが、注意点があります。アプリケーションは「ドメイン」に分割されているため、クライアント組織のそれぞれが独自のコンテンツを持っています。ここでは、より単純なモデルを使用して問題を説明しています。
各ドメインには同じリソース タイプがありますが、各リソース インスタンスは 1 つのドメインにのみ接続されます。1 つのドメインの場合は次のようになります。
Zend_Acl を使用してこれを実装するための 2 つの異なるアプローチを考え出しました。1 つ目は、ドメインごとに上記をコピーして、ドメインごとに異なる ACL を使用することです。2 つ目は、1 つの ACL のみを使用し、各ドメインに新しいロールを追加することです。
2 番目のアプローチには、ユーザーがあるドメインの管理者でありながら、別のドメインの編集者になることができるという利点があります (実際に発生する可能性があります)。ただし、ロールが静的ではないという欠点もあります。ドメインを追加または削除するたびに生成する必要があります。
これらのアプローチのいずれかが有効か、または複数のドメインを処理するためのより良い方法はありますか?
zend-framework - Zend:ViewヘルパーのACLロジック
背景情報:
私は自分のadmin
モジュールにいて、でビューヘルパーを作成しましたmodules/admin/views/helpers/AdminPanel.php
。ビューにのレイアウトを使用するように強制するレイアウトプラグインがありますadmin/views/layouts/default.phtml
。
ACLオブジェクトにアクセスして、ユーザーがビューヘルパーのコンテキストでリソースを持っているかどうかを判断し、configs/admin-nav.xmlを解析して管理パネルのhtmlを返すかどうかを判断しようとしています。まったく。
私はそれを私の管理者レイアウトで次のように呼んでいます:
そして、空白のクラスコードは、次のaclオブジェクトにアクセスする必要があります。
私はこれを試しました:
しかし、これはおそらく私が探しているものではありません。デフォルトのモジュールを強制的views/layouts/default.phtml
にロードし、エラーが発生するからです。
これが私のグローバルブートストラップファイルです: