0

このように、ログインしたユーザー用の安全な領域があります-->

firewalls:
    members_secured_area:
                pattern: ^/
                provider: entity_searchers
                anonymous: ~
                form_login:
                    check_path: /searchers/login_check
                    login_path: /searchers/login
                    default_target_path: /searchers/
                logout:
                    path:   /searchers/logout
                    target: /searchers/login

    crm_secured_area:
                pattern: ^/crm/
                provider: entity_crmusers
                anonymous: ~
                form_login:
                    check_path: /crm/login_check
                    login_path: /crm/login
                    default_target_path: /crm/customers
                logout:
                    path:   /crm/logout
                    target: /crm/login
                remember_me:
                    #token_provider: entity_crmusers
                    key: someS3cretKey
                    name: NameOfTheCookie
                    lifetime: 3600 # in seconds
                    secure: false
                    httponly: true
                    always_remember_me: false
                    remember_me_parameter: _remember_me
access_control:
    members_login:
        path: /searchers/login
        roles: IS_AUTHENTICATED_ANONYMOUSLY
    members_register:
        path: /searchers/register
        roles: IS_AUTHENTICATED_ANONYMOUSLY
    members_area:
        path: /searchers/.*
        roles: ROLE_USER

    crm_login:
        path: /crm/login
        roles: IS_AUTHENTICATED_ANONYMOUSLY
    crm_register:
        path: /crm/register
        roles: IS_AUTHENTICATED_ANONYMOUSLY
    crm_area:
        path: /crm/.*
        roles: ROLE_CRM

そのため、ユーザーが保護された領域にいるときはログに記録されていることがわかりますが、メインページまたは mysite.com/about ページに戻っているときは、ログに記録されているかどうかわかりません...

それを知る方法はありますか?

4

3 に答える 3

0

コントローラーでは、$this->getUser() でユーザーを取得できます。ユーザーがログに記録されると、User クラスのインスタンスが返されます。それ以外の場合は NULL が返されるため、次のようなことができます。

$user = $this->getUser();

$is_logged = isset($user);

$is_logged はブール値で、ユーザーがログに記録されている場合は true、それ以外の場合は false です。

于 2013-07-02T12:35:17.893 に答える
0

この解決策を見つけたので、メイン サイトのパターンに配置するだけです: ^/(?!crm) は、フォルダー crm を含めないことを意味します。

ファイアウォール: members_secured_area: pattern: ^/(?!crm) provider: entity_searchers anonymous: ~ form_login: check_path: /searchers/login_check login_path: /searchers/login default_target_path: /searchers/ logout: path: /searchers/logout target: /searchers /ログインする

crm_secured_area:
            pattern: ^/crm/
            provider: entity_crmusers
            anonymous: ~
            form_login:
                check_path: /crm/login_check
                login_path: /crm/login
                default_target_path: /crm/customers
            logout:
                path:   /crm/logout
                target: /crm/login
            remember_me:
                #token_provider: entity_crmusers
                key: someS3cretKey
                name: NameOfTheCookie
                lifetime: 3600 # in seconds
                secure: false
                httponly: true
                always_remember_me: false
                remember_me_parameter: _remember_me
于 2013-07-02T21:30:25.987 に答える