[英]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.