問題タブ [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.
zend-framework - Zend-zend_aclを使用して存在しないアクションを検出するフレームワーク
そして私はこの状態で問題を抱えています
- ゲストは、Contollerインデックスとアクションビューにアクセスできます。
- しかし、彼がurl / index / view2と入力すると、アクションview2が存在しないため、エラーページにリダイレクトされるはずです。
- しかし、この条件は、彼がアクションビューのためにolnyを許可されていることを示しています。したがって、彼をエラーページにリダイレクトするのではなく、アクセスを拒否します
この問題をどのように解決できますか?
jquery - ZendACL-保護されているページへのajax/jqueryを介したリクエストの処理方法
私はここで立ち往生しています-これを回避するためのハックを書くことができますが、これを行う適切な方法があるかどうか疑問に思っていました。
Zend ACLを使用して、保護され、認証が必要なページを指定しています。たとえば、「UploadVideo.php」が保護されたページである場合(ユーザーがリンクをクリックしてそのページにアクセスすると)、ログインページに移動し、ログイン後にUploadVideo.phpページにリダイレクトされます。したがって、これはすべて処理され、正常に機能します。
今、この別のページに-「投票」ボタンのようなものがあります。ユーザーは、ログインしている場合にのみ投票できます。
ケース1ユーザーがログインしているとき-彼は投票ボタンをクリックします-私はJqueryを使用してアクションを次のように呼び出しています:
$.post('/video/vote', {video_id:video_id}, function(data) {
if(data=="OK") .....
}
これで/ video /voteは保護されたリソースであり、ユーザーがログインしているので-投票アクションが呼び出されますこれにより、投票数が増え、「OK」メッセージが返され、ページは新しい投票数で動的に更新されます。
ケース2ユーザーがログインしていない-投票ボタンをクリックする-ページが保護されているため-ログインページは変数「data」のajax呼び出しを通じて返される理想的には、ユーザーがログインしていない場合-ajax呼び出しは発生しない-ユーザーはログインページにリダイレクトされる必要があります-ログイン後、投票数を増やす/ video/voteアクションにリダイレクトされます-そして最後に投票ボタンでページに送り返されます
これをどのように処理しますか。私はいくつかのハックを書いて、ユーザーがログインしているかどうかを確認し、それに応じてajax呼び出しを行うか、ユーザーをリダイレクトするかを決定できますが、これが最善の方法です。
問題を明確に説明したかどうかはわかりません。
御時間ありがとうございます
php - Zend_Auth の複数のインスタンス (2)
Zend Framework 上に構築された CMS があります。Zend_Auth
「CMS ユーザー」認証に使用します。CMS ユーザーには、 で適用される役割と権限がありZend_Acl
ます。現在、オンライン ストアなどの「サイト ユーザー」を作成しようとしています。Zend_Auth
簡単にするために、サイト ユーザー用に の別のインスタンスを使用したいと思います。Zend_Auth
シングルトンとして書かれているので、これを達成する方法がわかりません。
ロールでこれを達成したくない理由:
- サイト ユーザー (訪問者) による CMS ユーザーの汚染
- サイト ユーザーが誤って昇格されたアクセス許可を取得する可能性があります
- ユーザーは、さまざまな役割よりもさまざまなタイプとしてより正確に定義されています
- 2 つのユーザー タイプは、別々のデータベース/テーブルに格納されます。
- 各タイプの 1 人のユーザーが同時にサインインできる
- 2 種類のユーザーには異なる種類の情報が必要です
- 既存のコードで行う必要があるリファクタリング
zend-framework - Zend_ACLはどのように役割を取得しますか?
Zendのドキュメントとここにあるいくつかの投稿を読んだ後、ユーザーテーブルからユーザーロールを取得する方法を理解できませんでした。
現時点では、AuthControllerで次のようにZend_Authを使用しています。
その後、Zend_Controller_Pluginを介してチェックし、結果に応じてルーティングします。
ここで、ユーザーのロールに応じてルートを変更したいと思います。ユーザーが管理者の場合、AdminControllerにアクセスできますが、ユーザーテーブルからロールを取得するにはどうすればよいですか?この列はタイプと呼ばれ、役割を示す文字列が含まれています。
あなたが私を助けてくれることを願っています。
ご挨拶、
-lony
php - Zend Framework でいくつかの ACL をマージするには?
このようなオブジェクトのインスタンスはほとんどありませんZend_Acl
(モジュールごとに 1 つ):
それらを 1 つの ACL オブジェクトにマージして、ナビゲーション コンテナーで使用する方法は?
編集
いくつかの詳細情報:
- モデルベースのリソース(モデル、フォームの実装
Zend_Acl_Resource_Interface
)を優先してコントローラーリソースを使用しません。それらにはすべて方法がありますisAllowed()
- モジュラー ディレクトリと再利用可能なモジュール (個別のモデル、構成、ルートなど) を使用します。
- 私のアプリケーションは、インストールされているすべてのモジュール、コントローラー、アクションを認識しています (構造は既に解析済みで、リアルタイムではありません)
したがって、このスキームに従って、各モジュールの ACL を分離する方法を探しています。アプリケーション リソースは無駄なので使いたくない - acl は常に必要なわけではない。
本当に必要な場合にのみ、モジュール固有の ACL をインスタンス化するアクション ヘルパーがあります。ただし、グローバル アプリケーション ACL も使用できるようにしたい場合があります (たとえば、ナビゲーション ビュー ヘルパーまたはコントローラー プラグインに渡したい場合)。
私のモジュールの ACL クラスには、すべてメソッドが 1 つだけあります: init()
.
私が見る汚い解決策は、ソースクラスを解析し、ファイルを新しいクラスの1つのメソッドにマージすることです。
助言がありますか?
ajax - Zend_Navigation、Zend_ACL + ロールが Ajax リクエストで正しくフィルタリングされない
現在、自分のプロジェクトで zend_acl と Zend_Navigation を一緒に使用していますが、正しく動作しているようです。私は自分のサイトで多くの ajax を使用しており、現在のページをリロードせずにユーザーをログインさせる jqModal と jQuery を使用してログインし、ナビゲーションもリロードする必要があります。これまでのところ動作していますが、ナビゲーションが返されるのは、表示フィールドが true のすべてのリンクであり、これは正しくありません。たとえば、ユーザーとしてログインしている場合、ログイン リンクは表示されません。
どんな助けでも大歓迎です。以下のアクション、JavaScript 関数、および Json のコードが返されました。
================================================== ===== 現在の役割 = 管理者
// コントローラのアクション
public function getnavigationjsonAction() { //$view->navigation($container)->setAcl($this->_acl)->setRole(Zend_Registry::get('role')); // echo $this->navigation()->menu(); $navigation = $this->getView()->navigation()->setAcl($this->_acl)->setRole(Zend_Registry::get('role')); //die(Zend_Registry::get('role')); //die($this->_acl); $this->_helper->json($navigation->toArray()); }
// ジャバスクリプト関数
function reloadNavigationMenu() { //alert('reloading navigation'); $.ajax( { url : "/default/ajax/getnavigationjson"、type : "POST"、cache : false、async : false、data : "format=json"、success : function(data) { var html='' ; console.log(データ);
$.each(data, function(i) { if(data[i].visible === true) { //console.log(data[i]); html+='
}
// コントローラから JSON データを返す
[ { "action" : "index", "active" : false, "class" : null, "controller" : "admin", "id" : null, "label" : "Admin Section", "module" : " admin", "order" : null, "pages" : [ ], "params" : [ ], "privilege" : "index", "rel" : [ ], "reset_params" : true, "resource" : "admin :admin", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "インデックス」、「アクティブ」: false、「クラス」: null、"controller" : "index", "id" : null, "label" : "Home", "module" : "default", "order" : null, "pages" : [ ], "params" : [ ], "privilege" : null, "rel" : [ ], "reset_params" : true, "resource" : null, "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "index", "active" : false, "class" : null, "controller" : "index", "id" : null, "ラベル": "ニュース", "モジュール": "news", "order" : null, "pages" : [ ], "params" : [ ], "privilege" : "index", "rel" : [ ], "reset_params" : true, "resource" : "news :index", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : " index"、"active" : false、"class" : null、"controller" : "index"、"id" : null、"label" : "Tutorials"、"module" : "tutorials"、"order" : null 、「ページ」: []、「パラメータ」: []、"特権": "インデックス"、"rel": []、"reset_params": true、"resource": "tutorials:index"、"rev": []、"route": null、"target": null、" title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "about", "active" : false, "class" : null, "controller" : "index"," id" : null, "label" : "About", "module" : "default", "order" : null, "pages" : [ ], "params" : [ ], "privilege" : "about"," rel" : [ ]、"reset_params" : true、"resource" : "default:index", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "comments", "active" : false, "class" : null, "controller" : "index", "id" : null, "label" : "Comments", "module" : "default", "order" : null, "pages" : [ ], "params" : [ ], "privilege" : "comments", "rel" : [ ], "reset_params" : true, "resource" : "default:index" 、「rev」:[]、「ルート」:null、"target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "index", "active" : false, "class" : null, "controller " : "contact", "id" : null, "label" : "Contact", "module" : "default", "order" : null, "pages" : [ ], "params" : [ ], "privilege " : "index", "rel" : [ ], "reset_params" : true, "resource" : "default:contact", "rev" : [ ], "route" : null, "target" : null, "title ": null、"タイプ":"Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "login", "active" : false, "class" : null, "controller" : "auth", "id" : null, "label" : " Login"、"module" : "default"、"order" : null、"pages" : [ ]、"params" : [ ]、"privilege" : "login"、"rel" : [ ]、"reset_params" : true, "resource" : "default:auth", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "アクション" : "ログアウト","active" : false、"class" : null、"controller" : "auth"、"id" : null、"label" : "Logout"、"module" : "default"、"order" : null、"pages " : [ ], "params" : [ ], "privilege" : "ログアウト", "rel" : [ ], "reset_params" : true, "resource" : "default:auth", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true } ]Logout"、"module" : "default"、"order" : null、"pages" : [ ]、"params" : [ ]、"privilege" : "logout"、"rel" : [ ]、"reset_params" : true, "resource" : "default:auth", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true } ]Logout"、"module" : "default"、"order" : null、"pages" : [ ]、"params" : [ ]、"privilege" : "logout"、"rel" : [ ]、"reset_params" : true, "resource" : "default:auth", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true } ]rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true } ]rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true } ]
これは、私が現在管理者としてログインしているときであり、ログイン用のリンクは非表示にする必要がありますが、そうではありません。これは、ACL がナビゲーションに適切に割り当てられていないようです。
zend-framework - Zend_Acl の設定に関する提案が必要です
クラス/モデルがあるとします
- プロジェクト (多数のリストがあります)
- リスト
プロジェクトの共同作業者であるユーザーのみがリストを追加できるようにしたいと考えています。それ、どうやったら出来るの。使用する必要があることはわかっていますZend_Acl_Assert
が、リソースとして何を渡しますか。編集/削除の場合、リスト自体を渡します。追加の場合は、プロジェクトである必要があるようです。を に移動すると、どちらがより正しいと思わListsController#addAction()
れProjectsController#addListAction()
ますか? これは1つの可能性です
しかし、次のようなことをしたい場合、どうすればListsController#addAction()
ACL を設定できますか?
リソースとして「リスト」を渡します。代わりにプロジェクト オブジェクトを渡すことはできますか? それは意味をなさないようです
php - PHP MySQL Zend-ACL-ACLをグラフィカルに表示します:
次のようなMySQLDBテーブルが1つあります。resourcesテーブルです。
次のテーブル、ルールテーブルに:
OK、長さは申し訳ありませんが、私は自分がやろうとしていることの全体像を伝えようとしています。したがって、その仕組みでは、ロール(別名ユーザー)にコントローラーへのアクセスを許可(ルール:1)し、ロールは別の ロールまたはロールからアクセスを継承 (ルール:3)して拒否 (ルール:2)することができますコントローラーに。(ユーザーはリソースであり、コントローラーはリソースです)
アクションへのアクセスは、extras列を使用して許可/拒否されます。
これはすべて機能しますが、zend内でACLを設定する場合は問題ありません。
私が今やろうとしているのは、関係を示すことです。そのためには、明示的に削除された場合に停止するコントローラーへのアクセスがロールに許可されている最低レベルを見つける必要があります。役割を一覧表示する予定です。ロールをクリックすると、そのロールがアクセスできるすべてのコントローラーが表示されます。次に、コントローラーをクリックすると、役割に実行が許可されているアクションが表示されます。
したがって、上記の例では、ゲストはログインアクションとともにインデックスコントローラのインデックスアクションを表示できます。メンバーは同じアクセスを継承しますが、ログインアクションと登録アクションへのアクセスを拒否されます。モデレーターはメンバーのルールを継承します。
したがって、ロールモデレーターを選択する場合。コントローラのインデックスを一覧表示したいのですが。コントローラをクリックすると、許可されたアクションがaction:indexとして表示されます。(元々はゲストに付与されていましたが、その後は許可されていません)
これを行う例はありますか?私は明らかにZendMVC(PHP)とMySQLを使用しています。単なる説得力のあるコード例でさえ、有用な出発点になるでしょう-これは私がまとめているジグソーパズルの最後の部分の1つです。
PS明らかに私はACLオブジェクトを持っています-それを補間する方が簡単になるのでしょうか、それともPHP / MySQLを介して自分で行う方が良いのでしょうか?
目的は、役割がアクセスできるものを示し、GUIスタイルで役割、コントローラー、およびアクションを追加または編集できるようにすることです(これはやや簡単です)-現在、私は以前と同じようにDBを手動で更新していますサイトの構築。
zend-framework - Zend ACL - ログ ファイルの異常なエラー
ログ ファイルにこれらの一連のエラーが表示されており、所有しているリソースに対応するものがないため、これは少し奇妙です。実際、エラーファイルに表示されるこれらのリソースのいずれも認識していません
リソース res、fcs、open または 2127250264.html - これらは私のアプリケーションのリソースではないため、これらのエラーが何を意味するのかわかりません。
これをデバッグする方法について、誰でも光を当てることができますか。
編集
そして、これは私がリソースを定義したクラスです
zend-framework - ACL用のZend_Testおよびコントローラープラグイン(リダイレクト)
Zend Testで使用すると、コントローラープラグインのリダイレクトに問題があるのではないかと疑っています。
http://pastie.org/1422639のようなコントローラープラグインがあります。デバッグ用にechoステートメントを配置しました。ユーザーがログインしていない場合にログインにリダイレクトするためのコードがあります
ユニットをテストするとき、例えば
私が得た出力は
プロジェクト(プロジェクトページ/コントローラーをリクエストしました)、IDなし(OK、ログインしていません)、redir(リダイレクターを取得しました)、リダイレクト(リダイレクトしているようです...)、エラー(しかしエラーコントローラに到達しました)リソースがありません、
エラーコントローラにたどり着いた理由は、まだプロジェクト/インデックスページにたどり着いたからです。インデックスアクションでは、ユーザーがログインしていると想定しました。しかし、ログインしているユーザーを取得しようとすると
失敗します...
Zend Testでリダイレクタを機能させるにはどうすればよいですか?それとも、リダイレクタの問題ではないでしょうか?