0

私はここで立ち往生しています-これを回避するためのハックを書くことができますが、これを行う適切な方法があるかどうか疑問に思っていました。

Zend ACLを使用して、保護され、認証が必要なページを指定しています。たとえば、「UploadVideo.php」が保護されたページである場合(ユーザーがリンクをクリックしてそのページにアクセスすると)、ログインページに移動し、ログイン後にUploadVideo.phpページにリダイレクトされます。したがって、これはすべて処理され、正常に機能します。

今、この別のページに-「投票」ボタンのようなものがあります。ユーザーは、ログインしている場合にのみ投票できます。

ケース1ユーザーがログインしているとき-彼は投票ボタンをクリックします-私はJqueryを使用してアクションを次のように呼び出しています: $.post('/video/vote', {video_id:video_id}, function(data) { if(data=="OK") ..... } これで/ video /voteは保護されたリソースであり、ユーザーがログインしているので-投票アクションが呼び出されますこれにより、投票数が増え、「OK」メッセージが返され、ページは新しい投票数で動的に更新されます。

ケース2ユーザーがログインしていない-投票ボタンをクリックする-ページが保護されているため-ログインページは変数「data」のajax呼び出しを通じて返される理想的には、ユーザーがログインしていない場合-ajax呼び出しは発生しない-ユーザーはログインページにリダイレクトされる必要があります-ログイン後、投票数を増やす/ video/voteアクションにリダイレクトされます-そして最後に投票ボタンでページに送り返されます

これをどのように処理しますか。私はいくつかのハックを書いて、ユーザーがログインしているかどうかを確認し、それに応じてajax呼び出しを行うか、ユーザーをリダイレクトするかを決定できますが、これが最善の方法です。

問題を明確に説明したかどうかはわかりません。

御時間ありがとうございます

4

1 に答える 1

1

これにはZend固有の方法があるかもしれませんが、私にはわかりませんが、これよりも単純な(そしてよりクリーンな)ものは考えられません。

  • logged_inユーザーがログインしているかどうかに応じて、Javascript変数を入力します

  • logged_inユーザーが投票ボタンをクリックしたときのチェックを行います。そうでない場合はリダイレクトを提案する

  • 現在のページのURLを含むターゲット変数を使用してログインページにリダイレクトします(そのためには、Zend Framework固有の方法が存在すると確信しています)

  • 明らかに、すべてのサーバー側のチェックを適切に行ってください。これは便宜上です。

于 2010-11-18T19:12:20.943 に答える