首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZF2 ZfcUser强制登录

ZF2 ZfcUser强制登录
EN

Stack Overflow用户
提问于 2013-12-10 10:17:21
回答 1查看 1.1K关注 0票数 0

我有一个设置了模块ZF2的ZfcUser。

登记和登入表格运作良好。我做了一个定制模块,连接到Linkedin,获取用户的信息,然后在数据库中注册用户数据。

注册部分已经完成,但我面临的问题是,我需要用数据库中的数据登录用户(我有关于用户的所有信息,因此我知道应该登录哪个用户),但是我无法找到一种方法,让ZfcUser登录为一个特定的用户,而不是使用登录表单。

我不擅长适配器和\Zend\身份验证。我希望有任何帮助或指导。

我试图查看ZfcUser控制器中的登录过程,但这比帮助我更让我困惑。

我也试着在google上寻找答案,但在这个话题上我什么也没有发现。

如果可能的话,我希望“强制登录过程”在ZfcUser模块之外。

在看了几个小时的ZfcUser控制器之后,我成功地构建了一个方法来做我想做的事情

代码语言:javascript
复制
/**
* 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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-22 09:11:51

将用户id直接设置在您的存储上有一些缺点。如果您使用另一个存储引擎,它(显然)将无法工作。在ZFCUser的AuthService上注册的事件将不会被执行。

我将通过使用自定义身份验证适配器来解决这个问题。可以通过以下方式从控制器调用此适配器:

代码语言:javascript
复制
$this->zfcUserAuthentication()->getAuthService()->authenticate(new ForceLogin($user));

执行情况如下:

代码语言:javascript
复制
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()
        );
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20491694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档