我正在尝试通过与外部自定义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();
答案 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()
以前我用错误的索引保存会话。