問題タブ [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 - Zend_ACL のリスト ルール
Web アプリケーションで ACL リストを管理するために zend_acl を使用しています。「アクセス許可の管理」ダイアログを表示できるようにするには、次の組み合わせに対して定義されたルールを取得する可能性が必要です:
- 特定のリソースの特定のロールに設定された
ルール - 特定のリソースのロールに設定されたすべてのルール (
- 任意のリソースの特定のロールに設定されたすべてのルール (ロールが持つ権限)完全
なリストを表示できるようにするには、継承されたルールを含む追加のリストが常に存在する必要があります。親の役割/リソース。
これを解決する方法はありますか?
zend-framework - 認証とリソース制御のためにZend_Ath、Zend_Acl、partialviewを組み合わせるにはどうすればよいですか?
ランダムネスによると、どこにでも行くことができます。Ryanのブログ では、Zend Frameworkのアクションスタックコンポーネントは不要であり、リソースの認証と制御を目的として、部分的なビューをZend_AclおよびZend_Authと組み合わせることができます。
私はそれがどのように行われたかについてグーグルで適切な例を見つけることができませんでした。誰かがこれを実装する方法を教えてくれてうれしいです。ありがとう
php - コントローラプラグイン内のZend_Navigationから現在のページを取得する方法
コントローラプラグインを使用して認証プラグインに取り組んでいます。application.iniファイル内でナビゲーション構成を定義し、それとデータベースユーザーレコードを使用してACLを動的にロードし、Zend_Navigationに適用します。このビットは、メニューを正常にロードし、ユーザーが表示できるページのみを表示するため、機能します。
ただし、これはユーザーがページに直接アクセスすることを妨げるものではありません。私がやりたいのは、ユーザーがコントローラープラグイン内でアクセスできないページにアクセスするタイミングを特定して、ユーザーの要求を認証ページにリダイレクトできるようにすることです。
Zend_Navigationから現在のページを取得する関数があるはずだと思っていたのですが、見つからないので…存在しないのかもしれません。
とにかく、これは私の完全なコントローラープラグインです。誰かが解決策を見ますか?
php - Zend Navigation: プライベート アプリケーションの ACL 'Role' をどこにロードする必要がありますか
私は「プライベート」アプリケーションに取り組んでいます。何をするにもログインする必要があります。これにより、Zend Navigation のロールをロードする際に少し問題が発生します。現在、ブートストラップで Zend Navigation を「初期化」しています。ACL を Zend Nav に追加するまでは問題ありませんでした。問題は、認証ストレージから「userRole」をロードしたいのですが、ユーザーがログインするまでストレージがまだないため、ログインページで「オブジェクト以外のプロパティを取得しようとしています」という警告が表示されることです. これは、ログイン前は認証のストレージに何もないためです。ユーザーがログインして認証が構成されるまで、空になるauth->userRole
ため「何もない」ためです。auth->getInstance()->getIdentity()->???
私はログイン ページで Zend Nav を使用していません。実際、ログイン ページには別のレイアウトを使用しています (ナビゲーションはまったくありません)。'if !$auth->hasIdentity'
(false) ログイン レイアウトを使用し、システム全体でログイン ページのみを表示します。アプリケーションは完全にプライベートであると言ったので、「ゲスト」ロールなどをデフォルトにするのは「汚い」アプローチのように思えます。ユーザーがログインすると、とにかく認証を再構成する必要があります。ログインページを喜ばせるためだけに一般的な認証IDを設定するのは正しくないようです。
私が得ているのは、Zend Nav の「init」を移動する、または少なくとも構成 ACL 部分を移動するのに適した場所はどこですか? 全体を動かしてもいいですか?
これは、Zend Navigation の bootstrap.php にあるものです。
'$role = Zend_Auth::getInstance()->getIdentity()->userRole'
ブートストラップの実行時に空 (または非オブジェクト) になるのは です。
私のACLはすべてコントローラーで(アクションで)発生するか、ある時点でモデルで発生する可能性がありますが、Webサービスなどは予想していません。モデルに ACL があるため、柔軟性があります (それは「ドメイン」ですよね?
レイアウト、ユーザー エクスペリエンスの目的で、Zend Nav で ACL のみを使用しています。Zend Nav から取得したメニューとリンクは、ユーザーの役割に応じて「グレー表示」、存在しない、またはアクティブ (および表示) になります。たとえば、「ユーザー」の役割は多くの「管理者」オプションを取得しません。これはコントローラーの ACL によって再適用されるため、単純に URL を入力してエリアに到達することもできませんでした。
私のもう1つの考えは、この状況ではログインをブートストラップに移動することを考えるべきかもしれないということでしたが、それが良い考えかどうかもわかりませんか?
編集: これは、フロントコントローラープラグインに入れたコードです:
よく働く; もちろん、他のプラグインと同じようにプラグインを登録する必要がありました。また、認証チェックをフロントコントローラープラグインにも移動しました。
zend-framework - Zend_ACL : 複数の小規模チーム向けに役割ベースの ACL を設計するには?
役割ベースの ACL をどのように設計する必要があるか:
複数のチーム。各チームは 1 人のマネージャーと複数のメンバーで構成され、1 つの場所で作業します。各場所には複数のチームがあり、複数の場所があります。
各チームのマネージャーは、自分のチーム メンバーのデータのみを表示/編集できました。人は、場所に関係なく、複数のチームのメンバーになることもできます。
私の考え:私はそれを2つの部分に分けることを考えています. パート 1: 各チームに 1 つのグループが必要です。グループ メンバーシップのテーブルをデータベースに保持します。パート 2: これで、各ユーザーは任意のロールを持つことができます。ACL は、これらのロールに基づいて設計できます。ただし、データはパート 1 に基づいて取得されます。この方法では、コードを変更せずに新しいチームを追加できます。これは正しい方法ですか?
php - アサーションとダイナミック ACL のどちらを使用しますか?
基本的に、独自のアダプターで動作するようにメソッドをAuthorizationService
拡張Zend_Acl
およびオーバーライドします。authenticate()
私が、、、、、としUser
ましょう。Article
ArticleComment
ArticleVote
CommentVote
私のルールは簡単です:
- メンバーは自分の記事を編集できます
- メンバーは任意の記事に投票できます
- ゲストはコメントに投票できません
- ゲストは 1 日に 10 票を超えて投票することはできません。
ただし、これを実装する方法についてはよくわかりません。最後のルールについては簡単です。アサーションにする必要がありますが、自分の記事を編集できるメンバーはどうですか?
動的 ACL を作成し、「Article-545」やロール「User-5656」などのリソースを作成してから ACL ルールを作成するか、より一般的な「Article」リソースと一般的なロール「User」を作成する必要があります。アサーションを使用して、ユーザー 545 に記事 5656 の編集を許可しますか?
どうですか、何かアドバイスはありますか?
php - ACL によるフィルタリングはどこで実行する必要がありますか?
users
、books
、およびの 3 つのテーブルがあるとしusers_books
ます。
ビューの 1 つで、現在のユーザーがアクセスできるすべての書籍のリストを表示したいと考えています。ユーザーとブックに一致する行が に存在する場合、ユーザーはブックにアクセスできますusers_books
。
これを達成するには、(少なくとも) 2 つの方法があります。
- モデルの私の
fetchAll()
メソッドでは、テーブルで何らかの種類の a を実行します。books
join
users_books
- ACL プラグインでは、まずすべての本からリソースを作成します。次に、すべてのユーザーからロールを作成します。次に、テーブルに基づいて各リソースへのユーザー アクセスを許可または拒否し
users_books
ます。最後に、モデルのfetchAll()
メソッドで、現在のユーザーをロールとして使用して、見つけた各書籍を呼び出します。books
isAllowed()
アプリケーションの他の場所で Acl を使用できるため、最後のオプションが最適だと思います。これにより、重複したアクセス チェックを実行する必要がなくなります。
何を提案しますか?
zend-framework - Zend_Aclで「guest」ユーザーをどうするかを定義する際の問題
'guest'ユーザーが利用できるすべてのビューで次のエラーが発生します。
注意:35行目の/home/fiodorovich/public_html/gisele/library/Federico/Plugin/Acl.phpで非オブジェクトのプロパティを取得しようとしています
参照している行は「$role= $ this-> _ auth-> getStorage()-> read()->role;」です。の:
これは単なる通知であり、エラーが無効になるため本番環境には表示されないことを私は知っています...しかし、それは私を悩ませています。では、どうすればこれを解決できますか?
zend-framework - Zend_Acl と Zend_Navigation の組み合わせに問題がある
次のような Zend_Controller_Plugin_Abstract を拡張する Federico_Plugin_Acl があります。
そして、このメソッドは、このクラスを利用するための私のブートストラップにあります:
これらの構成をそのように設定すると、次のエラーが発生します。
キャッチ可能な致命的なエラー: Zend_View_Helper_Navigation_HelperAbstract::setAcl() に渡される引数 1 は Zend_Acl のインスタンス、指定された Federico_Plugin_Acl のインスタンスである必要があり、118 行目の /home/fiodorovich/public_html/gisele/application/Bootstrap.php で呼び出され、/home で定義されます/fiodorovich/library/ZendFramework/library/Zend/View/Helper/Navigation/HelperAbstract.php 行 333 コール スタック
Federico_Plugin_Acl は Zend_Controller_Plugin_Abstract のインスタンスであるため、これは予想されることです... それでも、代わりに Zend_Acl を拡張すると、次のエラーが発生します。
だから...私はしばらくの間、この問題を解決しようとしてきました...しかし、これが適切に機能していないようです...ここで何が欠けているかについてのアイデアはありますか?
php - Zend Acl-モジュール、コントローラー、アクション、モデル
私は、他のサイトと同様に、ここSOでZend_Aclを実装する方法についてのチュートリアルと回答を探して1日を過ごしました。そして、私は頭痛がしました。:バツ
特定のコントローラー/アクションへのアクセスを許可または禁止するために使用している人や、この方法は正しくないため、モデルに基づいてアクセスを許可または禁止する必要があると言う人を見かけました。ええと、2番目は実行可能に見えますが、これはすべてのコントローラーにモデルが必要であることを意味しますか?2番目の方法に従うと、たとえば投稿を編集しているときにのみ、ユーザーアクセスをブロックできるようになります。ただし、投稿を編集するコントローラーのアクションにアクセスできないようにしたいと思います。
コントローラーZのアクションYへの役割Xを持つユーザーへのアクセスをブロックしたい場合、2番目の選択肢に従うとどうすればよいですか?
実際のアプリケーションの例は大歓迎です。
この情報はあなたの答えを改善することができます: 私はORMとしてDoctrine 2を使用し、モジュールAdminを持っています。私のアプリケーションの実際の構造は次のようになります。