认证成功后如何找回用户名?

我在当前的 symfony 项目中使用 Gitlab 身份验证。我正在使用以下两个包。

  • 预兆/oauth2-gitlab

  • knpununiversity/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。我需要在成功登录后检索用户名。


森林海
浏览 163回答 2
2回答

小唯快跑啊

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

慕运维8079593

这是非常非常简单的。只需使用$this->getUser().public function index(){&nbsp; &nbsp; /** @var \App\Entity\User $user */&nbsp; &nbsp; $user = $this->getUser();&nbsp; &nbsp; return new Response('Well hi there '.$user->getFirstName());}
打开App,查看更多内容
随时随地看视频慕课网APP