問題タブ [symfony-security]
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 - Symfony のセキュリティで保護されていない領域でセッションがクリアされないのはなぜですか?
Symfony のセキュリティ コンポーネントを次のように実装しました。
ログアウトルートを呼び出すと、セッションが無効になります。
セキュリティコンテキストがセッションに保存されていることを理解している限り、ユーザーをログアウトするだけで十分です。しかし、彼はログアウトしていません。
ログアウトルートを保護された領域に配置してファイアウォールを更新すると、正常に$session->invalidate()
機能し、ユーザーはログアウトされます...
セキュリティで保護されていない領域で動作しないのはなぜですか? 非セキュア領域とは、非セッション領域という意味ではありませんよね?
php - 多くのエンティティに対して 1 つのクラス Voter を使用する
これは、Voter クラスのsupportsClass関数です。
http://symfony.com/doc/2.5/cookbook/security/voters_data_permission.html
同じバンドル内の多くのエンティティに対して 1 つのクラス ボーターを使用できるかどうか、またはエンティティごとにボーターを作成する必要があるかどうかを知りたいですか?
編集 私はこの解決策を見つけました:
symfony - Symfony2 Security で FOSUserBundle と SonataAdminBundle を使用して、すべてのファイアウォールで default_target_path を設定してログインに成功した後にリダイレクトする方法
これは私のセキュリティ ファイアウォールの構成です。
完全な構成: security.yml
期待どおりに機能する使用例は次のとおりです。
- ログインページ /login に直接アクセスすると、ユーザーは正しく default_target_path qis/ にリダイレクトされます。
- /contract ユーザーなどのページにアクセスすると、この要求されたページに正しくリダイレクトされます。
qisファイアウォールを使用して、 2で述べたのと同じ動作を実現したいと考えています。
しかし:
http://localhost:8000/qis/contract/listなどのqis ルート経由でアクセスすると、同じリンクにリダイレクトされず、default_target_path qis/ にリダイレクトされます。
qisファイアウォールで必要な設定は何ですか?
php - /admin へのアクセス、なぜシステムにログインしているすべてのユーザーがアクセスできるのですか?
私はこれを機能させるために何日も費やしていますが、最後の手段として、ここで私を助けてくれることを願っています。ポイントは、私のアプリケーションには、システムに登録されているすべてのユーザーがアクセスできるアプリケーションがあるfrontend
ためです。ロールを所有していないか、デフォルトのロール ROLE_USER を持っている場合、どちらもログインできないはずです。ROLE_ADMIN
backend
ROLE_ADMIN
私が抱えている問題は、管理者へのアクセス許可を持たない通常のユーザーで署名し (欠落ROLE_ADMIN
)、URL へのアクセス権app.php/admin
がない場合でも、問題なく入力できるということです。これは完全に間違っています。一方、frontend
任意のユーザーでログオンしようとするROLE_ADMIN
と、問題なくログオンでき、これは発生しないはずです。
これは私の構成security.yml
です:
私は何を間違っていますか?誰でも私に何か提案をしてもらえますか?
ドキュメントを上から下まで何度か読みましたが、何が間違っているのかわかりません
php - 同じファイアウォールでの Symfony2 認証方法
私はSymfony2が初めてです。ドキュメントを読み、ログインフォームの設定を見ました http://symfony.com/doc/current/cookbook/security/form_login_setup.html
同じファイアウォールに http_basic と form_login の 2 つのセキュリティ メソッドがある理由がわかりません。どの方法のセキュリティ システムを使用しますか? http_basic または form_login またはその両方? 冗長ですか?上記のいくつかの質問はばかげているように見えますが、symfony2 のセキュリティ コンポーネントのドキュメントは貧弱に思えます。
symfony - Web スパイダーが Symfony の制限されたページにアクセスできるようにする
Symfony の制限されたページへのアクセスを Web クローラーに許可するには?
IPのリストで許可する必要があると思いますが、それらを認証するにはどうすればよいですか?
angularjs - Symfony2: 一致しないすべてのルートに匿名でアクセスできるようにする
BackendBundle
APIFrontendBundle
用とAngularJS「クライアント」用の2つのバンドルに分割されたSymfony2アプリケーションがあります。すべてがファイアウォールの下で機能します。
BackendBundle
エンティティを持ち、API ルートを処理します。FrontendBundle
Angular ビュー、ルーティングなどがあり、ワイルドカードを使用したコントローラーは 1 つだけです。
FrontendBundle
ルーティングは の最後のリソースとして定義されapp/config/routing.yml
、他のルートが一致しなかった場合にのみ呼び出されます。そのおかげで、Angular HTML5 モードのルートが直接アクセスされた場合 (たとえば、コピー アンド ペースト) に処理でき、問題なく動作します。
私がやりたいことはAngularController::angularIndexAction()
、匿名ユーザーがすべての一致しないルート (によって処理される) にアクセスできるように、ファイアウォールおよび/またはアクセス制御を定義することです。
なんで?一部の API ルートを (フロントエンド プロキシ経由で) 開き、ユーザー以外がアクセスできるようにしたい (たとえば、ユーザーへのメッセージと共にメールで送信された確認 URL)。
匿名の「Angular」ルートごとにアクセス制御リストをハードコーディングしたくありません。API ルートに対してのみ実行したいと考えています。最後に、これらの一致しないルートは Angular のインデックスを開き、ユーザーがログインしているかどうか (完全なレイアウトまたは簡略化されたレイアウトを表示するため) を認識し、Angular ルートを処理し、リクエストが失敗した場合は何らかの「アクセスが拒否されました」というメッセージを表示する必要があります (Symfony リスナーがある場合)そのためのAngularの$provide
インターセプター)。
助言がありますか?
編集:@Security
注釈はAngularController::angularIndexAction()
機能しません。ファイアウォールのエントリ ポイントにリダイレクトされます。
Edit2:ここにの断片がありますsecurity.yml
{ path: '^/', roles: ROLE_USER }
ユーザーがログインしていない場合、すべてのルートがログインページにリダイレクトされることはわかっています。それは明らかだと思い、言及しませんでした。私が欲しいのは、各フロントエンドの「プロキシルート」を明示的に定義せずに、一致したルートを強制ROLE_USER
し、一致しないものを許可することです。IS_AUTHENTICATED_ANONYMOUSLY
私の場合、404 Symfony ページはありません。すべてがangular_index_all_unmatched_routes
ルートに送られ、そこで Angular ルーティング定義が処理するものがあるかどうかを決定するためです。