小编x2d*_*2na的帖子

symfony2以编程方式验证用户身份

我刚刚完成了本教程: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);
Run Code Online (Sandbox Code Playgroud)

但似乎它使用了错误的身份验证提供程序.

可以请有人告诉我我做错了什么?(:

更新:

当通过上述方法完成身份验证时,会话令牌存储在"默认"防火墙下.

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: ~
Run Code Online (Sandbox Code Playgroud)

为什么不使用"secured_area"防火墙而使用"默认"?如何正确强制使用"secured_area"?

php symfony

4
推荐指数
1
解决办法
3916
查看次数

标签 统计

php ×1

symfony ×1