コンソールコマンドを使用するSymfonyアプリケーションをビルドしています。同じコンソールコマンドはコントローラからのイベントで実行できますが、端末からも実行できます。コマンドがどこから実行されたのかを知るにはどうすればいいのでしょうか。コマンドがコントローラから実行された場合、ユーザーはすでに実行権限を持っています。しかし、ターミナルから実行されている場合、彼は必要な役割を持っているかどうかを確認するためにユーザー名とパスワードで認証する必要がありますか?Symfony - コンソールコマンドがコントローラから実行されたのか、ターミナルから実行されたのかを知る方法?
答えて
symfonyコンソールアプリケーションには、HttpKernelのようなファイアウォールレイヤーがありません。
コンソールコンポーネントは、個々のユーザーに面しているsthではなく、小さな「管理者のような」タスク向けに構築されています。
すべての問題は、コマンドバスパターンを実装することで解決できます。
"コマンド"はセキュリティ保護されていてユーザがあり、セキュリティチェックなしでCLIコマンド(crontab用)で作成されます。
その後、コマンドハンドラに処理するコマンドバスに渡されます。
ハンドラには、executeメソッドの現在のロジックが含まれています。コマンドオブジェクトには、これらのロジックを実行するためのデータがすべて含まれます。==現在の入力引数とオプション。
その後のSymfonyコマンドは、入力引数をコマンドハンドラに渡すような非常にスリムです。それがそうであるように。
長時間実行されるタスクの場合、Web要求からワーカー・キューにオフロードすることさえできます。
名前の衝突に気を付けてください。 symfonyコンソールコマンド!==ここではコマンドバスコマンドです。
たとえば、あなたはsymfonyの内部でSimpleBusを使用することができます。また https://github.com/SimpleBus
@skoopによって命名問題に関する最近のブログ記事: http://leftontheweb.com/blog/2016/06/18/Command-or-Controller/
あなたのコマンドは、コンソールから実行されたかどうかをチェックすることができますユーザーがログインしている場合やphp_sapi_name() function or PHP_SAPI constant使用してコントローラから(php_sapi_nameに似ている())
if ('cli' === PHP_SAPI) {
// command was run from the console
} else {
// command was run from a controller
}
- 1. Symfony 2テストケースからコンソールコマンドを実行
- 2. コマンド内から複数のSymfonyコンソールコマンドを実行する
- 3. PythonスクリプトがAwsのUbuntuターミナルから実行されない
- 4. コードから実行されたAzure WebJobを実行する
- 5. 実行されたバッチファイルから値を取得する方法
- 6. Mavenから実行されたテストでIntellijから実行されなかった場合
- 7. symfony - kernel.terminateでコンソールコマンドを実行
- 8. コントローラからsymfonyのコマンドを実行できますか?
- 9. どのアクティビティが最後に実行されたかを知る方法
- 10. オーバーロードされた代入演算子のコードが実行されるかどうかを知る方法?
- 11. コントローラーで実行されたコマンドから例外をスローする
- 12. cygwinで実行されているJavaプログラムからマッピングされたネットワークドライブからFiles()をリストする方法は?
- 13. アプリケーションがホームページからロードされたときの実行コード/ローカル通知?
- 14. コントローラの選択された行からデータテーブルを取得する
- 15. PHP - ターミナル、ubuntuサーバーからコードを実行
- 16. リリースを実行する方法:指定されたGitタグから実行しますか?
- 17. バンドルインストールが間違ったディレクトリから実行される
- 18. ClearCase Explorerから実行されるキャプチャコマンド
- 19. Uniscribe ScriptItemizeから返された実行回数を減らす方法
- 20. Symfony2のコマンドラインからCRONジョブが実行されない
- 21. コレクションビューコントローラから別のセルクラスで宣言されたIBActionを実行する方法
- 22. javascriptが実行された後domからhtmlを取得
- 23. メソッドが実行されたときにサービスに知らせる
- 24. MySQLクエリから返された各行のCeleryタスクを実行しますか?
- 25. バッチジョブが実行されているかどうかを知る方法
- 26. AJAXリクエストが実行されるかどうかを知る方法?
- 27. リンクされたDBから別のSPでSPを実行
- 28. ターミナルから実行したときのランタイムエラー
- 29. Manual Testのアクションレコーディングから生成されたCodedUIテストの実行
- 30. テストされたモジュールからのユニットテストの実行
は、あなただけのチェックではないでしょうか? –
コンソールコマンドはウェブから実行されるものではありません。ところで、誰かが端末にアクセスした場合、すべてのファイルへのアクセス権があるため、アクセスチェックは役に立たない可能性があります。 – tkausl
私はpheanstalkでコマンドを実行し、データをinfuxDBに更新します。しかし、私は、アップデートが正しく実行されなかったり何かがうまくいかなかった場合、端末によってコマンドを実行するオプションを追加したい。しかし、彼は認証する必要があり、私は役割を確認する必要があります。 IPによるアクセスを制限する追加のセキュリティがサーバー上に存在するため、問題はありません。しかし、内部のIPからのアクセス権を持つ多くの雇用者がいるので、彼が何をしているのかわからない人がコマンドを実行しているのが好きではないでしょう。 – sanof