FOSUserbundle 登录表单不重定向到路由
FOSUserbundle login form not redirecting to route
我正在使用 FOSUserBundle,我想在登录后将用户重定向到主页。我正在使用注释来定义我的路线,并将我的主页路线命名为 "homepage"。但是,我在登录后收到错误 "no route found for homepage"。当我从我的 security.yml
文件中删除 default_target_path
和 always_use_default_target_path
信息时(如下所示),该表单在登录后将我重定向到一个空白页面。当我将其添加回去(指定路线)时,我收到未找到路线错误。
这是我的 routing.yml
app:
resource: "@AppBundle/Controller/"
type: annotation
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
这里是security.yml
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
require_previous_session: false
login_path: fos_user_security_login
check_path: fos_user_security_check
always_use_default_target_path: false
default_target_path: homepage //the name of my route
这是默认控制器:
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
return $this->render('default/index.html.twig');
}
}
我已经使用多个命令多次清除缓存,但仍然没有成功。可能是什么问题?谢谢。
尝试使用您的路线路径而不是其名称作为您的 default_target_path
,
例如default_target_path: /
当然,您应该可以使用经过身份验证的用户正常浏览homepage
路由。
如果有效,执行php app/console debug:router
命令。
如果您没有看到路线 homepage
,说明您的路线定义有误。
我猜路由名称不是 homepage
,可能是因为使用 AppBundle
.
时自动添加的前缀
此外,您将 always_use_default_target_path
设置为 false,请确保您的登录表单不包含 _target_path
隐藏字段。
我正在使用 FOSUserBundle,我想在登录后将用户重定向到主页。我正在使用注释来定义我的路线,并将我的主页路线命名为 "homepage"。但是,我在登录后收到错误 "no route found for homepage"。当我从我的 security.yml
文件中删除 default_target_path
和 always_use_default_target_path
信息时(如下所示),该表单在登录后将我重定向到一个空白页面。当我将其添加回去(指定路线)时,我收到未找到路线错误。
这是我的 routing.yml
app:
resource: "@AppBundle/Controller/"
type: annotation
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
这里是security.yml
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
require_previous_session: false
login_path: fos_user_security_login
check_path: fos_user_security_check
always_use_default_target_path: false
default_target_path: homepage //the name of my route
这是默认控制器:
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
return $this->render('default/index.html.twig');
}
}
我已经使用多个命令多次清除缓存,但仍然没有成功。可能是什么问题?谢谢。
尝试使用您的路线路径而不是其名称作为您的 default_target_path
,
例如default_target_path: /
当然,您应该可以使用经过身份验证的用户正常浏览homepage
路由。
如果有效,执行php app/console debug:router
命令。
如果您没有看到路线 homepage
,说明您的路线定义有误。
我猜路由名称不是 homepage
,可能是因为使用 AppBundle
.
此外,您将 always_use_default_target_path
设置为 false,请确保您的登录表单不包含 _target_path
隐藏字段。