gpt4 book ai didi

php - 交响乐 2 : manual login and Json Web Token

转载 作者:搜寻专家 更新时间:2023-10-31 21:31:19 25 4
gpt4 key购买 nike

我目前的项目有问题。我一直在使用 Symfony 2.6 这个项目是我的前端调用的 API。身份验证和登录流程非常具体,它使用中间件(其他网站)。

我添加了一个名为 JWTAuthenticationWebToken 的包因此,由于使用了中间件,我需要手动登录用户。我正确安装了 bundle 并添加了正确的设置,但从未调用过此自定义用户提供程序。

手动登录如何实现?

我的 Controller :

<?php $token = new UsernamePasswordToken($user, null, "login", $user->getRoles());
$this->get("security.context")->setToken($token); //now the user is logged in
//now dispatch the login event
$request = $this->get("request");
$event = new InteractiveLoginEvent($request, $token);
$this->get("event_dispatcher")->dispatch("security.interactive_login", $event); ?>

安全.yml

firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
# the login page has to be accessible for everybody
demo_login:
pattern: ^/demo/secured/login$
security: false
login:
pattern: /api/user/uber/f6d75c949cda2517b826cacba5523792
stateless: true
anonymous: true
form_login:
check_path: /api/user/uber/f6d75c949cda2517b826cacba5523792
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
require_previous_session: false

api:
pattern: ^/(api)
stateless: true
lexik_jwt: ~

我还编写了此处提到的两个文件“ApiKeyAuthenticator”和“ApiKeyUserProvider”用于手动身份验证。 http://symfony.com/doc/current/cookbook/security/api_key_authentication.html

编辑:我还创建了 LexikJWTAuthenticationBundle 文档中提到的监听器”

怎么了? :(

谢谢你的帮助

最佳答案

经过大量搜索(google、stackoverflow、示例应用程序、bundle 的文档,...),似乎没有建议的解决方案来从 Controller 手动验证用户。

此外,我必须打开源代码,找到调用哪个方法来在成功的身份验证事件(source code)上生成 token ,最后根据我的需要调整代码(从 API 注册/登录用户) Facebook 登录的响应,在移动应用程序中)。

我的选择:

// SecurityController.php

protected function generateToken($user, $statusCode = 200)
{
// Call jwt_manager service & create the token
$token = $this->get('lexik_jwt_authentication.jwt_manager')->create($user);

// If you want, add some user informations
$userInformations = array(
'id' => $user->getId(),
'username' => $user->getUsername(),
'email' => $user->getEmail(),
'roles' => $user->getRoles(),
);

// Build your response
$response = array(
'token' => $token,
'user' => $user,
);

// Return the response in JSON format
return new JsonResponse($response, $statusCode);
}

token 将与经典的 login_check 处理程序一样返回,并且在过期前具有相同的时间。

希望这对下一个用户有帮助。

关于php - 交响乐 2 : manual login and Json Web Token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com