3

Zend Framework を使用して開発中の Web サイトがあります。同じサーバーにWordpressサイトも配置しています。Zend サイトにログインするときに、任意の(例: AJAX 呼び出し)を使用して Wordpress サイトにログインすることは可能ですか?

理由:

Zend サイトにワード プレス ブログへのリンクがあり、そのリンクをクリックすると、Wordpress のログイン ページに移動します。

ログインしたユーザーとしてワードプレスのブログページのリンクにユーザーを連れて行きたいです。

私はこれについて多くのことを調査しましたが、正しいパスを見つけることができませんでした。

ありがとう。

4

3 に答える 3

0

Using AJAX between 2 different domain names is forbidden, you can use the Curl function in PHP. http://bit.ly/RBGgfp

于 2012-11-03T00:23:33.613 に答える
0

両方のサイトが同じサーバー上にあるため、おそらく Zend と WordPress の両方からファイルにアクセスできます。ユーザーが Zend ベースのサイトにログインしている場合、基本的な wordpress ファイルをロードする呼び出しを追加し、関数 wp_set_auth_cookie() を使用してユーザーを wordpress にログインさせることができます。

require_once 'wordpress-directory/wp-load.php';
wp_set_auth_cookie( $wp_user_id );

Zend サイトの users テーブルに、ユーザーwp_user_idの wordpress ユーザー ID を格納する列を追加して、関数に渡すユーザー ID を知ることができますwp_set_auth_cookie()

もう少し一般的な用語でブログ記事を書きました。こちらもチェックしてください。

于 2013-04-16T05:43:36.630 に答える
0

あなたの問題にはセキュリティ上の懸念があります。実際に資格情報を渡さずに、ある Web サイトから別の Web サイトに資格情報を渡す方法…

WP にログインしているユーザーが、実際には Zend に既にログインしているユーザーと同じであることを WP に伝える、ある種の認証プロセスが必要です。この目的のために、ZF から WP への Ajax 呼び出しでユーザー名とパスワードを渡すことはできません。キャッシュされた JS ソース コードからすべてのユーザーのパスワードを取得できるからです。また、ajax 呼び出しでユーザー名だけを渡すことはできません。これは、誰もがそのような ajax 呼び出しを行って他の誰かとしてサインインできるためです。

一般に、クライアント側のリクエスト (Ajax) による承認の受け渡しをできるだけ制限する必要があります。

これを行う 1 つの方法は、OAuth と呼ばれる多くのソーシャル ネットワーク (Facebook など) で使用されるメカニズムです。Facebook は認証に特別なトークンを使用し、Facebook と Facebook 接続メカニズムを使用する Web サイトとの間で資格情報が渡されることはありません。また、Facebook は PHP の curl 関数を使用してクロス サーバー コールを背後で行うため、認証プロセスに関する痕跡がクライアント側に残されません。

使用できますが、OAuth を使用する必要はありませんが、使用すると良い経験になります。

あなたが直面しているもう 1 つの問題は、おそらく ZF と WP がクライアント側で異なる認証 Cookie を使用していることです。したがって、ZF Web サイトでユーザーを承認するときは、適切な Cookie が設定されていることを確認するために、ログインを担当する WP ページへの Ajax 呼び出しも行う必要があります。

要約すると、プロセス フローは次のようになります (ユーザー アカウントが両方のサイトで既に作成されていると仮定します)。

  1. ZF サイトにユーザーをログインします。
  2. ZF からユーザー ID (たとえば) を含む WP ページへの curl 呼び出しを行い、ランダムに生成された何らかのトークンを返します (指定された ID を持つユーザーが存在する場合)。
  3. curl 呼び出しが WP からトークンを受け取ったら、WP への Ajax 呼び出しを行う JS を使用して ZF Web ページを生成します (WP への Ajax 呼び出しの送信方法については、こちらで説明しています: http://codex.wordpress.org/AJAX_in_Plugins ) この Ajax 呼び出しmd5 ハッシュ化されたユーザー ID とトークンのようなものが含まれている必要があります。
  4. WP 側では、WP はハッシュ値を使用して ZF の Ajax 呼び出しを受け取ります。したがって、この値が以前に WP が返したユーザー ID とトークンをハッシュした後の値 (ステップ 2) と同じかどうかを確認します。はいの場合、WP サイトでユーザーをログインします。

ここで、ZF から WP にユーザー パスワードを送信しないため (暗号化されているため、WP 側でもわかりません)、wp_signon を使用してユーザーをサインインすることはできません。ただし、この特定の目的には十分な wp_set_auth_cookie を使用できます。

大雑把な説明ですが参考になれば幸いです。

PS wp_login は推奨されていないため、使用を避ける必要があります。

また、wp_login アクションは wp_set_auth_cookie を呼び出しません。これは、ユーザーが最初にログインしているように見えなかった理由である可能性があります。

wp_set_auth_cookie を使用してソリューションを試してください。上記のセキュリティ上の懸念を見逃さないように、最後にこれを言っています。

于 2012-11-03T00:32:22.490 に答える