亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

認證成功后如何找回用戶名?

認證成功后如何找回用戶名?

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 關注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號