1
我有两个捆绑userBundle和xxxBundle。我想在验证用户包中的用户之后将其重定向到xxxBundle。但是,根据角色(ROLE_ADMIN和ROLE_USER),我会将他重定向到两个不同的路由(route1,route2)。symfony认证后重定向用户
我加入这个控制器我userBundle
class SecurityController extends Controller
{
public function loginAction()
{
if ($this->get('security.context')->isGranted('ROLE_ADMIN')) {
return $this->redirect($this->generateUrl('route1'));
}
if ($this->get('security.context')->isGranted('ROLE_USER')) {
return $this->redirect($this->generateUrl('route2'));
}
$request = $this->getRequest();
$session = $request->getSession();
// On vérifie s'il y a des erreurs d'une précédent soumission du formulaire
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
}
return $this->render('UserBundle:Security:login.html.twig', array(
// Valeur du précédent nom d'utilisateur rentré par l'internaute
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
));
}
但是,这并没有给出相应的结果是:一个正确的用户名和密码,用户将被重定向到欢迎页面symfony的。 有没有人对此有过解释?
我symfony的文件,我可以使用hiddden领域如下控制从登录表单的重定向中发现:
{# src/Acme/SecurityBundle/Resources/views/Security/login.html.twig #}
{% if error %}
<div>{{ error.message }}</div>
{% endif %}
<form action="{{ path('login_check') }}" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<input type="hidden" name="_target_path" value="account" />
<input type="submit" name="login" />
</form>
问:我怎么可能parametrise路线负责用户和管理员。
使用访问控制列表(ACL)会更合适吗? – user2269869
你确定'route1'和'route2'存在吗? Symfony可能会向您提供不存在的路由的欢迎URL。也许增加一些调试(var_dump/die)来看看发生了什么? –
路由route1和route2是我自己定义的捆绑包的路由@PhillSparks – user2269869