Uygulamada, biri istemciler ve bir tanesi yöneticiler için olmak üzere 2 giriş formu vardır.Farklı giriş formları için aynı sağlayıcıyı kullanın
security:
providers:
form_login:
entity: { class: FMP\SecurityBundle\Entity\User, property: username }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
app_secured_area:
pattern: ^/
anonymous: ~
form_login:
provider: form_login
login_path: security_app_login
check_path: security_app_login_check
default_target_path:/
logout:
path: security_logout
target: security_app_login
admin_secured_area:
pattern: ^/admin
anonymous: ~
form_login:
provider: form_login
login_path: security_admin_login
check_path: security_admin_login_check
default_target_path: /admin/
logout:
path: security_logout
target: security_admin_login
default:
anonymous: ~
http_basic: ~
DefaultController.php: rotayı /admin/login
erişebilir ve beni oturum açtığınızda
class DefaultController extends Controller
{
/**
* @Route("/login", name="security_app_login")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function appLoginAction(Request $request)
{
return $this->loginAction($request, 'FMPSecurityBundle:Default:app_login.html.twig');
}
/**
* @Route("/admin/login", name="security_admin_login")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function adminLoginAction(Request $request)
{
return $this->loginAction($request, 'FMPSecurityBundle:Default:admin_login.html.twig');
}
public function loginAction(Request $request, $template)
{
$session = $request->getSession();
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
}
return $this->render($template, array(
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
));
}
/**
* @Route("/login_check", name="security_app_login_check")
*/
public function loginCheckAppAction()
{
//
}
/**
* @Route("/admin/login_check", name="security_admin_login_check")
*/
public function loginCheckAdminAction()
{
//
}
/**
* @Route("/logout", name="security_logout")
*/
public function logoutAction()
{
//
}
}
, aşağıdaki hata döndürülür:
iki biçimde
aynı sağlayıcısı kullanmakDenetleyici bir yanıt vermelidir (verilen boş değer). Denetleyicinizde bir yere bir iade bildirimi eklemeyi unuttun mu?
Sorun nedir? Aynı sağlayıcıyı farklı formlar için kullanamazsınız?
It çalışmaları ateşler? –
@ FrançoisDupont evet. İstemciler için çalışır (/ login), ancak yöneticiler için (/ admin/login). – Filipe
Bu yönteme girdiğiniz gibi görünüyor: loginCheckAdminAction() ancak erişip erişemeyeceğinizi kontrol eden Symfony güvenlik sistemine girmediniz. Security_app_login_check –