0

我正在尝试通过从外部自定义代码创建的CakePHP会话登录到应用程序。但我无法弄清楚如何准确地做到这一点。我不想用形式来做。credentialsPHP

例如:我在站点 A 登录,我的CakePHP应用程序是站点 B(都托管在同一台服务器上,但在不同的文件夹中)。

我已将username/password站点 A 中的集合检索到 B 中。

但我现在不知道如何在站点 B 中使用它。

有同样的想法吗?

谢谢。

注意:我在 CakePHP 会话中收到用户名,即$this->Session->read('Username');

现在想通过 Auth 登录,例如$this->Auth->login($this->Session->read('Username')); 这样我就可以通过 $this->Auth->user(); 获取用户

你能帮我吗?我在 AppController 中这样做,方法: beforeFilter() , _checksession()

4

3 回答 3

0

如果您已经拥有从站点 A 发送的用户名和密码,您就不能再次针对数据库验证凭据吗?或者创建一个存储会话的表并将它们链接到用户名,然后通过 PHP $_SESSION 变量传递该会话变量

站点 A:

session_start();
$this->Session->write('session','ABCDEFGHIJKL12345' ); // random generated string
// store in DB

然后当您到达站点 B 时:

站点 B:

session_start();
// if  $this->Session->read('session') == '' force login again
//else

//compare the session in the db and check for valid session

//if valid

//load page.
于 2013-07-10T14:20:13.697 回答
0

如果您已经在会话中拥有用户名/密码,请尝试构建一个用户模型数据数组,然后 Auth 将尝试自动为您验证:

// Construct model data array like what AuthComponent would usually expect
$userData = array(
    'User' => array(
        'username' => $this->Session->read('username'), // Use your stored values (change as appropriate)
        'password' => $this->Session->read('password')
    )
);

// Attempt to authenticate the user
if ($this->Auth->login($userData)) {

    // Login worked

} else {

    // Login failed

}
于 2013-07-10T15:36:30.623 回答
0

谢谢大家,我得到了一个解决方案,而不是发送密码,我只发送用户名,经过适当的验证后,我尝试登录为:

$username = $this->Session->read('userName');
//validation
$user = $this->User->find('first',array('conditions'=>array('username'=>"$username")));

$this->Session->write('Auth',$user);

//now I can use: 
$this->Auth->login()

以前我在错误的索引处保存会话。

于 2013-07-12T12:38:58.600 回答