1

トークンがログインの 3 つのフォーム パラメータである RSA/Page Token のようなセキュリティ対策を構築したいと考えています。(ユーザー名、パスワード、トークン)

ユーザーコントローラーの「ログイン」アクションの役割が何であるかは明確ではありません。これは Auth コンポーネントの「AfterFilter」ですか?

このロジックは機能しますか?

// controllers/users_controller.php
login()
{
    if(isbadtoken($this->data['User']['Token']))
        $this-redirect('http://dev.null');
}

このロジックは、Cookie のログインやソーシャル ネットワークのログインなどのアプリケーション コントローラーに入れる必要がありますか?

4

1 に答える 1

1

Cake 2.0 以降では、認証ログイン メソッドを手動で呼び出す必要があるため、次のような方法で動作するはずです。

function login()
{
    if (isbadtoken($this->request->data['User']['Token']))
    {
        return;
    }

    // login user etc..
    if ($this->Auth->login())
    { /* ... */ }
}

Cake の以前のバージョンでは、コードの前に auth login が既に呼び出されているため、次のようなものが必要になります。

function login()
{
    if (isbadtoken($this->request->data['User']['Token']))
    {
        // since auth doesn't know about about token,
        // log out the user in case auth login was successfull
        $this->Auth->logout();
        return;
    }

    if (!$this->Auth->user())
    {
        /* user is not logged in */
        return;
    }

    /* user is logged in */
}

おそらくより良い解決策は、認証コンポーネントにトークンを認識させ、何らかの方法でログインプロセスに含めることですが、それが複雑すぎる場合は、上記のような方法で問題が発生することはありません.

于 2012-05-01T17:37:43.993 に答える