为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
森林海 2022-07-29 12:34:46
我在当前的 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 版本)TokenStorageSecurity服务(找不到哪个版本支持哪个,确保sf5 支持Security组件)。

如果您选择(或被迫)使用TokenStorage(或其界面),则需要执行以下步骤:

  1. 获取令牌

  2. 检查令牌是否不是null

  3. 从令牌中检索用户名(或可选地检索整个用户,然后从那里检索用户名)


查看完整回答
反对 回复 2022-07-29
?
慕运维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());

}


查看完整回答
反对 回复 2022-07-29
  • 2 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号