我在當前的 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 關注
- 139 瀏覽
添加回答
舉報
0/150
提交
取消