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

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

在 Google App Engine (GAE) 上部署時無法識別 app.user

在 Google App Engine (GAE) 上部署時無法識別 app.user

PHP
守著星空守著你 2023-09-08 18:25:27
我有一個用 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 會話存儲來處理此問題的方法。


查看完整回答
反對 回復 2023-09-08
  • 1 回答
  • 0 關注
  • 137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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