0

私はDoctrineとの実用的なsymfonyを行っています-JobeetJobWebサイトは、バックエンドがどのように機能するかを理解しようとしています。フロントエンドとバックエンドでisAuthenticated()関数を上書きしようとしています。私が行ったことは、apps \ frontend\libで簡単です。 \ myUser.class.phpファイル、私はこれを公開しました

function isAuthenticated()
{
    return (bool)($this->authenticated && $this->getAttribute('is_customer', false, 'sfGuardSecurityUser'));
}

sfDoctrineGuardのsignIn関数もこのように上書きします

public function signIn($user, $remember = false, $con = null)
{
    parent::signIn($user, $remember, $con);
    if($this->authenticated){
        $this->setAttribute('is_customer', true, 'sfGuardSecurityUser');
    }
}

私はapps\backend \ lib \ myUser.class.phpのバックエンドについても同じことをしましたが、is_adminを使用して、今まではすべてが完璧でした。バックエンドでは、ジョブを編集するときに、セッションのsfGuardSecurityUserがこのページで呼び出されるisAuthenticated()関数は、apps \ frontend \ lib \ myUser.class.phpにあるため、失われました。ページを変更しようとすると、ログアウトします。cuzisAuthenticated()呼び出された関数はapps\backend \ lib \ myUser.class.phpにあり、まれに聞こえますが、ジョブの編集ページでのみ発生します。今はここで立ち往生しています。皆さんが私を理解してくれることを願っています。具体的には、ジョブ/編集ページに移動し、アクションでprint_r($ _ SESSION)を配置すると、この部分が表示されます。

[sfGuardSecurityUser] => Array
            (
                [user_id] => 1
                [is_admin] => 1
            )  

しかし、ページをリロードすると、この部分が表示されなくなるため、ページを変更しようとすると、ログアウトします。また、apps \ frontend \ lib \ myUserからisAuthenticatedをコメントまたは削除すると、ログアウトします。 class.phpバックエンドのすべてが完璧ですが、バックエンドとフロントエンドの関数を上書きする必要があります

助けが要る

ありがとう

4

1 に答える 1

0

アプリの で正確なセッション名を設定してみてくださいfactories.yml:

all:
  storage:
      class: sfSessionStorage
      param:
        session_name: my_session_name
        session_cookie_domain: example.com
于 2011-04-05T03:44:14.553 に答える