我有一个重定向成功登录后的问题。
App.php文件(部分):
<?php
use SilexApplication;
/** ... */
use SymfonyComponentSecurityCoreEncoderPlaintextPasswordEncoder;
$app = new Application();
/** ... */
$app['security.encoder.digest'] = $app->share(function ($app) {
return new PlaintextPasswordEncoder();
});
$app['security.firewalls'] = array(
'secured' => array(
'pattern' => '^/admin/',
'form' => array(
'login_path' => '/login',
'check_path' => '/admin/login_check',
'default_target_path' => '/admin/news',
'always_use_default_target_path' => true,
),
'logout' => array(
'logout_path' => '/admin/logout',
),
'users' => array(
'admin' => array('ROLE_ADMIN', 'test'),
),
),
);
我的controller .php文件:
<?php
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
$app->get('/login', function(Request $request) use ($app) {
return $app['twig']->render('login.html.twig', array(
'error' => $app['security.last_error']($request),
'last_username' => $app['session']->get('_security.last_username'),
));
});
$app->get('/admin/news', function(Request $request) use ($app) {
if ($app['security.authorization_checker']->isGranted('ROLE_ADMIN')) {
echo 'admin';
}
});
我登录了(通过正确的登录数据的形式后),我可以访问/admin/news路由,但我必须手动去那个地址。我想在成功登录后自动重定向到那里。现在我停留在/登录页面。当我将default_target_path更改为'http://google.com'时,它可以正常工作。
我使用homestead (vagrant)与nginx。1.3.0 Silex版本。
有效的解决方案(或者更确切地说是变通方法)是:
- change
'default_target_path'
to'/admin';
-
添加新路由:
$app->get('/admin', function() use ($app) { return $app['twig']->render('admin/loggedIn.html.twig'); });
-
在
admin/loggedIn.html.twig
模板我添加了js重定向到admin/news
我不知道为什么它不工作。如果有人知道-请留下评论