【发布时间】:2015-03-23 17:33:20
【问题描述】:
我刚刚完成了这个教程: http://symfony.com/doc/current/cookbook/security/api_key_authentication.html(包括“在会话中存储身份验证”)
它通过 api 密钥工作和授权用户,并成功地将身份验证存储在 Session 中。
但是,我不知道如何通过该身份验证方法以编程方式对用户进行身份验证。
我尝试过类似的方法:
$user = new User(
'admin',
null,
['ROLE_ADMIN']
);
$token = new PreAuthenticatedToken($user, null, "secured_area", $user->getRoles());
$this->get("security.token_storage")->setToken($token);
$request = $this->get("request");
$event = new InteractiveLoginEvent($request, $token);
$this->get("event_dispatcher")->dispatch("security.interactive_login", $event);
但它似乎使用了错误的身份验证提供程序。
请有人告诉我我做错了什么吗? (:
更新:
当通过上述方法完成身份验证时,会话令牌存储在“默认”防火墙下。
security:
providers:
api_key_user_provider:
id: api_key_user_provider
firewalls:
dev:
pattern: ^/(_(profiler|wdt|error)|css|images|js)/
security: false
secured_area:
pattern: ^/admin
simple_preauth:
authenticator: apikey_authenticator
default:
anonymous: ~
为什么不使用“secured_area”防火墙而使用“default”? 如何正确强制“secured_area”使用?
【问题讨论】: