我们正在Symfony 2中从头开始构建业务应用程序,我在用户注册流程中遇到了一些问题:在用户创建帐户后,他们应该使用这些凭据自动登录,而不是立即被迫再次提供他们的证书.
任何人都有这方面的经验,或能够指出我正确的方向?
我已经在stackoverflow上阅读了很多关于此的帖子.但是大多数方法在Symfony 2.3中没用.所以我尝试在测试中手动登录用户以在后端进行一些操作.这是我的security.yml
security:
...
role_hierarchy:
ROLE_SILVER: [ROLE_BRONZE]
ROLE_GOLD: [ROLE_BRONZE, ROLE_SILVER]
ROLE_PLATINUM: [ROLE_BRONZE, ROLE_SILVER, ROLE_GOLD]
ROLE_ADMIN: [ROLE_BRONZE, ROLE_SILVER, ROLE_GOLD, ROLE_PLATINUM, ROLE_ALLOWED_TO_SWITCH]
providers:
database:
entity: { class: Fox\PersonBundle\Entity\Person, property: username }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/person/login$
security: false
main:
pattern: ^/
provider: database
form_login:
check_path: /person/login-check
login_path: /person/login
default_target_path: /person/view
always_use_default_target_path: true
logout:
path: /person/logout
target: /
anonymous: true
access_control:
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/person/registration, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/person, …Run Code Online (Sandbox Code Playgroud) 我想在注册后自动登录用户.首先我尝试这种方式 https://gist.github.com/simonjodet/3927516.Bu山雀不起作用.我发现其他人有同样的问题,并在这个问题中找到了解决方法,但它对我不起作用.
这是我的代码,登录过程正常.但注册时不会自动登录.
我的安全配置:
$app['security.firewalls'] = array(
'main' => array(
'pattern' => '^(/user|/logout|/login_check)',
'form' => array(
'login_path' => '/login/',
'check_path' => '/login_check/',
'require_previous_session' => false,
'username_parameter'=> 'form[email]',
'password_parameter' => 'form[password]'
),
'remember_me' => array(
'key' => 'adfafasfasdfdasfasdfa', //whatever random string
'remember_me_parameter' => 'form[remember]'
),
'logout' => array('logout_path' => '/logout/', 'invalidate_session' => true),
'users' => function(Silex\Application $app){
return $app['user_manager'];
}
)
);
Run Code Online (Sandbox Code Playgroud)
注册时我的UserController.php代码:
if ($signupForm->isValid()) {
$plainPassword = $data['password'];
//preparing data to be inserted
$password = self::encodePassword($data['email'], $plainPassword, …Run Code Online (Sandbox Code Playgroud)