我在当前的 symfony 项目中使用 Gitlab 身份验证。我正在使用以下两个包。预兆/oauth2-gitlabknpununiversity/oauth2-client-bundle在我的security.yaml文件里面security: # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers providers: app_user_provider: id: App\Security\UserProvider firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: anonymous: true guard: authenticators: - App\Security\GitlabAuthenticator access_control: - { path: ^/connect, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/, roles: ROLE_USER }这工作正常,它正在存储 cookie PHPSESSID。我需要在成功登录后检索用户名。
2 回答

小唯快跑啊
TA贡献1863条经验 获得超2个赞
UserProvider
(在登录过程中使用)返回一个UserInterface
,它代表一个用户。您可以从中访问用户名。
现在,如何检索该用户?
根据 Symfony 的版本,以及您想要访问它的位置,您有几种可能性:
Symfony <3.2
在控制器 - >你可以使用
$this->getUser()->getUsername();
Symfony >=3.2
UserInterface
在控制器中 ->直接作为依赖注入(阅读更多)
对于这两种情况,如果您需要用户不在控制器中,您可以注入(基于您的 symfony 版本)TokenStorage
或Security
服务(找不到哪个版本支持哪个,确保sf5 支持Security
组件)。
如果您选择(或被迫)使用TokenStorage
(或其界面),则需要执行以下步骤:

慕运维8079593
TA贡献1876条经验 获得超5个赞
这是非常非常简单的。只需使用$this->getUser().
public function index()
{
/** @var \App\Entity\User $user */
$user = $this->getUser();
return new Response('Well hi there '.$user->getFirstName());
}
- 2 回答
- 0 关注
- 162 浏览
添加回答
举报
0/150
提交
取消