1

我想建立一个像 RSA/Page Token 这样的安全措施,其中令牌是登录中的 3 表单参数。(用户名、密码、令牌)

我不清楚用户控制器的“登录”操作的作用是什么。这是 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+ 中,您需要手动调用 auth login 方法,所以这样的事情应该可以工作:

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

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

在以前的蛋糕版本中,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 */
}

更好的解决方案可能是让 auth 组件知道令牌并以某种方式将其包含在登录过程中,但如果这样做太复杂,那么上面的内容应该不会给您带来麻烦。

于 2012-05-01T17:37:43.993 回答