pro*_*mer 1 php redirect symfony fosuserbundle hwioauthbundle
假设我有一个页面http://example.com/page1
我在这里登录了facebook链接.
另外在另一页,第2页,我已经在Facebook上放置了登录链接.
我想要的是,在第1页上用facebook链接点击登录后,它应该重定向到page1,并且在第2页上点击登录链接时,它应该重定向到Page2.
现在,它总是重定向到'example.com/'.
我正在使用Hwioauthbundle与Symfony2中的fosuserbundle集成
1)创建身份验证处理程序
<?php
namespace Company\Bundle\Handler;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Router;
class SecurityHandler implements AuthenticationSuccessHandlerInterface, AuthenticationFailureHandlerInterface
{
private $router;
public function __construct(Router $router)
{
$this->router = $router;
}
public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
$referer = $request->headers->get('referer');
if (empty($referer)) {
return new RedirectResponse($this->router->generate('homepage'));
} else {
return new RedirectResponse($referer);
}
}
public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
{
// Edit it to meet your requeriments
$request->getSession()->set('login_error', $error);
return new \Symfony\Component\HttpFoundation\RedirectResponse($this->router->generate('login_route'));
}
}
Run Code Online (Sandbox Code Playgroud)
2)将其注册为服务
# src/Company/Bundle/Resources/config/services.yml
security_handler:
class: Company\Bundle\Handler\SecurityHandler
arguments: [@router]
Run Code Online (Sandbox Code Playgroud)
3)配置HWIO以将此服务用作处理程序
# app/config/security.yml
firewalls:
# ....
you_firewall:
oauth:
# ....
resource_owners:
# ....
success_handler: security_handler
failure_handler: security_handler # optional
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1703 次 |
| 最近记录: |