我希望在我的sf2项目中自定义身份验证链接,我使用SonataAdmin SonataUserBundle(后端)和FosuserBundle + HWIOAuthBundle(facebook登录),我创建了一个accoutbundle包,这是我的控制器:
class ConnectController extends Controller
{
public function loginAction()
{
//login code
$request = $this->container->get('request');
/* @var $request \Symfony\Component\HttpFoundation\Request */
$session = $request->getSession();
/* @var $session \Symfony\Component\HttpFoundation\Session\Session */
// get the error if any (works with forward and redirect -- see below)
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} elseif (null !== $session && $session->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = '';
}
.....
创建我自己的登录页面,这是我的app / config / routing.yml:
admin:
resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
prefix: /admin
_sonata_admin:
resource: .
type: sonata_admin
prefix: /admin
sonata_user_security:
resource: "@SonataUserBundle/Resources/config/routing/sonata_security_1.xml"
sonata_user_resetting:
resource: "@SonataUserBundle/Resources/config/routing/sonata_resetting_1.xml"
prefix: /resetting
sonata_user_profile:
resource: "@SonataUserBundle/Resources/config/routing/sonata_profile_1.xml"
prefix: /profile
sonata_user_register:
resource: "@SonataUserBundle/Resources/config/routing/sonata_registration_1.xml"
prefix: /register
sonata_user_change_password:
resource: "@SonataUserBundle/Resources/config/routing/sonata_change_password_1.xml"
prefix: /profile
sonata_user:
resource: '@SonataUserBundle/Resources/config/routing/admin_security.xml'
prefix: /admin
#HWIOAuthBundle routes
hwi_oauth_security:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /login
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /login
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /login
facebook_login:
pattern: /login/check-facebook
facebook_connect:
pattern: /login/facebook
account_connect:
pattern: /connect
defaults: { _controller: AcmeAccountBundle:Connect:login } //personalized link does not work
所以登录页面/app_dev.php/login的链接没有指向“account_connect”的问题,但他总是去声纳用户登录页面,所以我的问题是如何禁用sonatauserbundle计数而不改变任何东西在我的供应商文件夹?
中答案 0 :(得分:1)
路由始终与表中的第一个条目匹配。我认为在vendor文件夹中更改路由的最佳方法是覆盖它的一部分。
见这里:http://symfony.com/doc/current/cookbook/bundles/override.html