我有一個(gè)用 php7.4 編寫的應(yīng)用程序,使用框架 symfony 5,我正在嘗試將其部署在標(biāo)準(zhǔn)環(huán)境 Google App Engine 上。身份驗(yàn)證由 login_form 處理,而 user_provider(目前)是 in_memory_user 提供程序。(這不是最終版本,身份驗(yàn)證稍后會(huì)更改,但現(xiàn)在我應(yīng)該能夠在 GAE 上部署具有此類配置的應(yīng)用程序。)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在本地運(yùn)行應(yīng)用程序,一切都按預(yù)期進(jìn)行。一旦我在登錄表單中提交用戶名和密碼,他就會(huì)設(shè)置“app.user”。當(dāng)重定向到“ accueil ”頁面(即基本 URL gae-domain/admin)時(shí),它會(huì)識(shí)別出有用戶登錄,并且該用戶被授予訪問該頁面的權(quán)限。在 App Engine 上這不起作用。它確實(shí)可以識(shí)別您是否輸入了正確或錯(cuò)誤的密碼,因此它確實(shí)可以識(shí)別 users_in_memory 提供程序,并且如果用戶名 + 密碼正確,它會(huì)立即調(diào)用“/ admin ”頁面,但他會(huì)立即重定向到登錄頁面,因?yàn)樗麩o法識(shí)別登錄用戶,因此您無權(quán)訪問“/admin”頁面。為了測試,我刪除了 access_control,現(xiàn)在用戶再次可以訪問“ /admin ”頁面,但在該頁面內(nèi),沒有任何內(nèi)容針對(duì)他的角色進(jìn)行個(gè)性化,因此,他再次無法在“/admin”頁面中找到用戶應(yīng)用程序用戶'。我的 app.yaml 看起來像這樣(### 在部署時(shí)被替換為正確的信息)runtime: php74env_variables: APP_ENV: prod APP_SECRET: ### DATABASE_URL: ###
1 回答

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您的 App Engine 服務(wù)擴(kuò)展,App Engine 標(biāo)準(zhǔn)環(huán)境不支持會(huì)話關(guān)聯(lián),您的內(nèi)存用戶將不會(huì)在實(shí)例之間共享。嘗試將您的縮放策略?移至手動(dòng)縮放并設(shè)置1 instance
要使會(huì)話在多個(gè) App Engine 實(shí)例中持續(xù)存在,您需要使用數(shù)據(jù)庫。Symfony 提供了一種使用 PDO 會(huì)話存儲(chǔ)來處理此問題的方法。
- 1 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報(bào)
0/150
提交
取消