4

次のsecurity.ymlがあります:

security:
    encoders:
        Test\BackEndBundle\Entity\User:
            algorithm: sha512
            encode-as-base64: true
            iterations: 10

    providers:
        main:
            entity: { class: TestBackEndBundle:User, property: username }

    firewalls:
        main:
            pattern: /.*
            form_login:
                check_path: _security_check
                login_path: _security_login
                default_target_path: homepage
            logout: true
            security: true
            anonymous: true

    access_control:
        - { path: ^/service, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /.*, roles: {ROLE_PARTNER, ROLE_ADMIN} }

そして次のルーティング:

homepage:
    pattern:  /
    defaults: { _controller: TestBackEndBundle:Default:index }

_security_login:
    pattern:  /login
    defaults: { _controller: TestBackEndBundle:Security:login }

_security_check:
    pattern:  /login_check

_security_logout:
    pattern:  /logout

ログイン後のリダイレクトではなく、認証が適切に機能します。アプリケーションは/_wdt/5044c6f2a329cにリダイレクトします。ホームページにリダイレクトするにはどうすればよいですか?ありがとう。

4

3 に答える 3

12

解決策は、_wdt ルートの保護を解除することです。

_wdt ルートが保護されているため、この動作が発生します。ページが _wdt ルートからツールバーをロードすると、ログインがトリガーされます。ログイン フォームは、ログインをトリガーしたルート (この場合は _wdt) にリダイレクトしようとします。

これを security.yml の access_control に追加します

 - { path: ^/_wdt, roles: 'IS_AUTHENTICATED_ANONYMOUSLY' }

これにより、ツールバーは保護されたページと保護されていないページの両方で機能し、ページが保護されている場合は、ログイン フォームをトリガーするページになります = 期待どおりに機能します。

于 2013-06-20T18:58:37.327 に答える
2
  1. You have to create a success_handler implementing the AuthenticationSuccessHandlerInterface
  2. Then you have to declare it as a service (in services.xml or services.yml)
  3. And add it to your security configuration.
于 2012-09-03T15:10:32.457 に答える
0

また、設定always_use_default_target_path: trueすると、default_target_path期待どおりに機能します。詳細を参照してください

于 2013-02-19T13:31:32.763 に答える