Login Symfony用户在部署时被断开连接
在服务器上部署应用程序时,我遇到了以下问题: 当我手动记录我的用户时,它工作正常,当我转到配置文件、编辑时,它工作正常! 但是 当我转到一个不由FOSUserBundle处理的页面时,我的用户不再登录Login Symfony用户在部署时被断开连接,login,symfony,fosuserbundle,Login,Symfony,Fosuserbundle,在服务器上部署应用程序时,我遇到了以下问题: 当我手动记录我的用户时,它工作正常,当我转到配置文件、编辑时,它工作正常! 但是 当我转到一个不由FOSUserBundle处理的页面时,我的用户不再登录 $token = new UsernamePasswordToken($user, $user->getPassword(), $providerKey, $user->getRoles()); $userProvider = new UserProvider($this->ge
$token = new UsernamePasswordToken($user, $user->getPassword(), $providerKey, $user->getRoles());
$userProvider = new UserProvider($this->get('fos_user.user_manager'));
$this->get("security.token_storage")->setToken($token);
$event = new InteractiveLoginEvent($request, $token);
$this->get("event_dispatcher")->dispatch("security.interactive_login", $event);
但在当地,它起作用了
如果你有任何想法。。。很高兴,谢谢
编辑:
这是我的保安
# app/config/security.yml
security:
encoders:
Canapey\UserBundle\Entity\User: sha512
role_hierarchy:
ROLE_USER: [ROLE_USER]
# Un admin hérite des droits d'auteur et de modérateur
ROLE_ADMIN: [ROLE_USER, ROLE_MODERATEUR]
# On garde ce rôle superadmin, il nous resservira par la suite
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
main:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
provider: main
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
csrf_token_generator: security.csrf.token_manager
always_use_default_target_path : true
logout:
path: fos_user_security_logout
target: /
remember_me:
secret: "%secret%" # %secret% est un paramètre de parameter
always_remember_me: true
access_control:
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, roles: IS_AUTHENTICATED_ANONYMOUSLY }
简而言之:在
config.yml
中获取会话的路径:
framework:
...
session:
...
save_path: ...
并确保在部署期间不会更改/清空
细节
大多数部署系统在部署过程中清理所有工作文件夹(例如缓存
,tmp
,会话
),甚至使用基于版本的结构,其中实际根目录每次都是从头创建的,并软链接到当前的目录(请参见Capistrano:)
在这些情况下,会话在部署过程中会被破坏,因此您当然会注销。FOSUserBundle并不真正处理与安全相关的事情。如果您的用户未登录到某些页面,可能是因为您的防火墙配置过紧。如果您仅在/admin
上设置防火墙,而不在/
上设置防火墙,则SecurityContext
将不可用。我添加了我的security.yml,为“/”定义了一个角色。此外,当我使用fosuserbundle连接连接自己时,它会起作用,无论我走到哪里,我都会保持连接:/