我使用 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之类的内容,但如果我在/loginor/路由上执行此操作,anon.即使我是认证。
我怎样才能获得经过身份验证的用户,如果有的话,否则anon.字符串,在/and/login路由上,以便显示如下消息:Logged in as $username?
我还尝试使用is_granted('IS_AUTHENTICATED_FULLY'树枝模板中的函数来检查用户是否经过身份验证,但是打开/login并且/它返回 false(即使我经过身份验证),因为匿名用户优先于经过身份验证的用户,所以这里没有成功。