cakephp Auth登录会话

时间:2013-07-10 12:24:01

标签: php session cakephp login oauth

我正在尝试通过与外部自定义CakePHP代码创建的credentials会话登录PHP应用。但我无法弄清楚如何做到这一点。我不想用表格来做。

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

我已将网站A中的username/password集检索到B.

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

有什么想法吗?

感谢。

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

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

你可以帮助我吗? 我在AppController中执行此操作,方法:beforeFilter(),_ checkckssion()

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分: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

}

答案 2 :(得分: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()

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