【发布时间】:2014-04-08 07:10:48
【问题描述】:
我正在按照本指南http://symfony.com/doc/current/cookbook/security/api_key_authentication.html 通过 API KEY 进行身份验证。
在调用最后一个方法身份验证令牌后,我可以登录用户,但它不会保留会话。
return new PreAuthenticatedToken(
$user,
$apiKey,
$providerKey,
$user->getRoles()
);
我还尝试使用以下方法进行身份验证:
$user = new User("Test", null, array("ROLE_USER"));
$token = new UsernamePasswordToken($user, null, 'secured_area', $user->getRoles());
$this->get('security.context')->setToken($token);
$this->get('session')->set('_security_secured_area',serialize($token));
在这两种情况下,我只能让用户登录一个页面,而不是所有项目。
安全就像指南:
firewalls:
secured_area:
pattern: ^/testproject
stateless: true
simple_preauth:
authenticator: apikey_authenticator
谢谢
[更新]
$user = new ApiKeyUserProvider();
$user = $user->loadUserByUsername("111111");
$apiKeyProvider = $this->get('apikey_authenticator');
$token = $apiKeyProvider->authenticateToken("111111",$user);
$this->get('security.context')->setToken($token);
$this->get('session')->set('_security_secured_area',serialize($token));
loadUserByUsername 就像 symfony 指南。
谢谢
【问题讨论】:
-
对于第二种方法,您可能需要使用您的令牌
PreAuthenticatedToken而不是UsernamePasswordToken
标签: php api symfony authentication