如果一切都失败(或变成过度疼痛处理),你总是可以简单介绍一下中介的路线,做你的逻辑在那里。
也就是说,创建一个动作,其唯一目的是根据需要的逻辑重定向用户,然后将其作为目标路径放入security.yml
防火墙中。
security:
firewalls:
main:
pattern: ^/
anonymous: ~
form_login:
login_path: login
check_path: login
default_target_path: login_success
always_use_default_target_path: true
logout:
path: logout
凡登录会是这样的:
class AuthenticationController extends Controller
{
/**
* @Route("/login", name="login")
* @Route("/logout", name="logout")
*/
public function loginAction(Request $request)
{
// Standard login stuff here
}
/**
* @Route("/login_success", name="login_success")
*/
public function postLoginRedirectAction()
{
if (/* user needs to see location A */) {
return $this->redirectToRoute("location_a");
} else if (/* user needs to see location B */) {
return $this->redirectToRoute("location_b");
} else {
return $this->redirectToRoute("index");
}
}
}
您可以在表单中重定向有了这样的自定义输入:http://symfony.com/doc/current/security/form_login。 html – davidbonachera
这是我推测你知道的完全相同的链接... –
哎呀..一种方法可能是使用会话/ cookie和重定向,如果它是空的。 http://symfony.com/doc/current/components/http_foundation.html#setting-cookies/ http://api.symfony.com/3.2/Symfony/Component/HttpFoundation/Cookie.html – davidbonachera