0

私はsymfony1.4とsfGuardwithPropelを使用していますが、これが私の最初のsymfony体験であることを考えると、私はまだアーキテクチャの一部を完全に理解していません。

いくつかのWebサービスを作成するように依頼されましたが、そのうちの1つは、ユーザー(電子メール)とパスワードを取得し、結果としてjson文字列のフィードバックを出力することです。

sfGuardを使用してこのようなタスクを実行する方法についての手がかりがないので、誰かが例を持っているなら、それはありがたいです。

sf_guard_userテーブルで次のような行が見つかったため、アルゴリズムはsha1である必要があると思います。

id  username                algorithm   salt                            password                                    created_at              last_login              is_active   is_super_admin
4   myuser@myhostname.com   sha1    623de866b49c696b452e0d12b55895c8    dcbe87a60a769b9e3b5f0988141b824fa5206235    2011-12-06 02:32:43     2011-12-27 15:49:41     1           0
4

2 に答える 2

1

sfGuardValidatorUserクラスを見てください。基本的には次のようなものです。

  1. 指定されたユーザー名を持つユーザーが存在するかどうかを確認します
  2. 1 の場合、アクティブかどうかを確認します (is_active フィールド)
  3. checkPassword2. の場合、クラスの public メソッドを使用してパスワードを確認しますsfGuardUser (デフォルトは のようなものですsha1(db_salt.submitted_password) == db_password) 。
于 2011-12-27T16:19:23.883 に答える
0

わかりました、汚いトリックを見つけましたが、うまくいきます。

ログイン フォームの送信を偽装して、通常のログイン パターンをそのまま使用すると、次のようになります。

        $request->setParameter('signin', array(
                'username' =>$request->getParameter("username"),
                'password' =>$request->getParameter("password"),
              ));
        $form = new BeetleLoginForm();
        $form->bind($request->getParameter('signin'));
        if ($form->isValid()) {
            $values = $form->getValues();
            $this->getUser()->signin($values['user'], false);
            $resp['return'] = "YES";
            $resp['message'] = "You have successfully logged in";
            return $this->renderText(json_encode($resp));

        }

これが誰かが同じ辺境で立ち往生するのを助けることができることを願っています.

于 2011-12-27T16:33:07.353 に答える