我有一個用 php7.4 編寫的應用程序,使用框架 symfony 5,我正在嘗試將其部署在標準環境 Google App Engine 上。身份驗證由 login_form 處理,而 user_provider(目前)是 in_memory_user 提供程序。(這不是最終版本,身份驗證稍后會更改,但現在我應該能夠在 GAE 上部署具有此類配置的應用程序。)security.yaml 文件:security:# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providersproviders: users_in_memory: memory: users: userOne: password: userOne roles: ROLE_USER userTwo: password: userTwo roles: ROLE_USER adminOne: password: admin roles: ROLE_ADMINfirewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: anonymous: ~ provider: users_in_memory form_login: login_path: login check_path: login default_target_path: accueil logout: path: logout target: login access_control: - { path: ^/admin, roles: [ROLE_ADMIN, ROLE_USER] } - { path: ^/logout, roles: [ROLE_ADMIN, ROLE_USER] } - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }encoders: Symfony\Component\Security\Core\User\User: plaintext在本地運行應用程序,一切都按預期進行。一旦我在登錄表單中提交用戶名和密碼,他就會設置“app.user”。當重定向到“ accueil ”頁面(即基本 URL gae-domain/admin)時,它會識別出有用戶登錄,并且該用戶被授予訪問該頁面的權限。在 App Engine 上這不起作用。它確實可以識別您是否輸入了正確或錯誤的密碼,因此它確實可以識別 users_in_memory 提供程序,并且如果用戶名 + 密碼正確,它會立即調用“/ admin ”頁面,但他會立即重定向到登錄頁面,因為他無法識別登錄用戶,因此您無權訪問“/admin”頁面。為了測試,我刪除了 access_control,現在用戶再次可以訪問“ /admin ”頁面,但在該頁面內,沒有任何內容針對他的角色進行個性化,因此,他再次無法在“/admin”頁面中找到用戶應用程序用戶'。我的 app.yaml 看起來像這樣(### 在部署時被替換為正確的信息)runtime: php74env_variables: APP_ENV: prod APP_SECRET: ### DATABASE_URL: ###
1 回答

慕田峪9158850
TA貢獻1794條經驗 獲得超7個贊
如果您的 App Engine 服務擴展,App Engine 標準環境不支持會話關聯,您的內存用戶將不會在實例之間共享。嘗試將您的縮放策略?移至手動縮放并設置1 instance
要使會話在多個 App Engine 實例中持續存在,您需要使用數據庫。Symfony 提供了一種使用 PDO 會話存儲來處理此問題的方法。
- 1 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消