繁体   English   中英

重试Symfony2中其他服务的登录失败

[英]Retry failed login on another service in Symfony2

我正在学习Symfony2,我喜欢它!
我一直在使用很棒的书和食谱,但是我在任何地方都找不到答案。
我正在使用另一个第三方登录API,但是响应速度有些慢,因此我想将已知用户存储在自己的数据库中,以缩短响应时间。
我已经设法使用实体提供者创建了自己的数据库,并且它可以正常工作。
现在,我想让Symfony在登录失败时尝试使用其他服务登录。

在这里,放置新代码是合乎逻辑的。

public function loadUserByUsername($username) {

    $q = $this
            ->createQueryBuilder('u')
            ->where('u.username = :username')
            ->setParameter('username', $username)
            ->getQuery();

    try {
        $user = $q->getSingleResult();
    } catch (NoResultException $e) {

        // Try login to other service before failing
        $login = $APIHelper->login($username, $password);

        if ($login) {
            // Make sure the user is persisted to database
            ...
            // Return the user
            return $login->getUser();
        }
        else {
            $message = sprintf(
                'Unable to find user SHSnaphackBundle:User object identified by "%s".', $username
            );
            throw new UsernameNotFoundException($message, 0, $e);
        }
    }

    return $user;
}

我认为,这可以正常工作,但找不到任何方法来获取密码,用户尝试使用该密码登录?

为此,这是否是正确的文件?

单独的实体提供者并不是正确的选择,因为安全框架(正确的是,实体提供者)会执行密码检查。 对于高级安全性知识,您必须了解安全性系统的内部知识,尤其是身份验证部分。 对于您的用例,您需要编写一个身份验证提供程序来完成您的问题中发布的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM