我正在使用FOSUserBundle,我想在登录后将用户重定向到主页。我正在使用注释来定义我的路线,并将我的主页路线命名为"主页"。但是,登录后出现错误"找不到主页的路由"。当我从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 AppBundleController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationRequest;
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
隐藏字段。