我有一个设置了模块ZF2的ZfcUser。
登记和登入表格运作良好。我做了一个定制模块,连接到Linkedin,获取用户的信息,然后在数据库中注册用户数据。
注册部分已经完成,但我面临的问题是,我需要用数据库中的数据登录用户(我有关于用户的所有信息,因此我知道应该登录哪个用户),但是我无法找到一种方法,让ZfcUser登录为一个特定的用户,而不是使用登录表单。
我不擅长适配器和\Zend\身份验证。我希望有任何帮助或指导。
我试图查看ZfcUser控制器中的登录过程,但这比帮助我更让我困惑。
我也试着在google上寻找答案,但在这个话题上我什么也没有发现。
如果可能的话,我希望“强制登录过程”在ZfcUser模块之外。
在看了几个小时的ZfcUser控制器之后,我成功地构建了一个方法来做我想做的事情
/**
* Change the currently logged user
* @param integer $user_id
*/
public function setLoggedUser($user_id) {
$storage = new \Zend\Session\Container('Zend_Auth');
$storage->storage = $user_id;
}发布于 2014-05-22 09:11:51
将用户id直接设置在您的存储上有一些缺点。如果您使用另一个存储引擎,它(显然)将无法工作。在ZFCUser的AuthService上注册的事件将不会被执行。
我将通过使用自定义身份验证适配器来解决这个问题。可以通过以下方式从控制器调用此适配器:
$this->zfcUserAuthentication()->getAuthService()->authenticate(new ForceLogin($user));执行情况如下:
class ForceLogin implements Zend\Authentication\Adapter\AdapterInterface
{
/**
* @var UserInterface
*/
protected $user;
/**
* @param $user
*/
function __construct($user)
{
$this->user = $user;
}
public function authenticate()
{
return new Zend\Authentication\Result(
Result::SUCCESS,
$this->getUser()->getId()
);
}
}https://stackoverflow.com/questions/20491694
复制相似问题