我使用 PHP 和 Silex 构建了一个 Web 应用程序,并通过SecurityServiceProvider
以下方式实现了基本身份验证:
$app->register(new Silex\Provider\SecurityServiceProvider(), array(
'security.firewalls' => array(
'private' => array(
'remember_me' => array(
'key' => $config['secret_key'],
'lifetime' => $config['remember_me_duration'],
),
'pattern' => '^/admin',
'form' => array('login_path' => '/login', 'check_path' => '/admin/login_check'),
'logout' => array('logout_path' => '/admin/logout'),
'users' => $app->share(function () use ($app) {
// ...
}),
),
'public' => array(
'pattern' => '^/$',
'anonymous' => true,
),
'login' => array(
'pattern' => '^/login$',
'anonymous' => true,
),
),
));
如您所见,/admin
路径是安全的,我可以$app['security']->getToken()->getUser();
在那里获取经过身份验证的实际用户并显示类似Logged in as $username之类的内容,但如果我在/login
or/
路由上执行此操作,anon.
即使我是认证。
我怎样才能获得经过身份验证的用户,如果有的话,否则anon.
字符串,在/
and/login
路由上,以便显示如下消息:Logged in as $username?
我还尝试使用is_granted('IS_AUTHENTICATED_FULLY'
树枝模板中的函数来检查用户是否经过身份验证,但是打开/login
并且/
它返回 false(即使我经过身份验证),因为匿名用户优先于经过身份验证的用户,所以这里没有成功。