注册后自动登录 php,php – 自动注册后用户身份验证

在Symfony2.6及以后版本中,security.context被弃用,推荐使用security.token_storage来设置和管理用户令牌。这篇博客介绍了如何在控制器中创建UsernamePasswordToken,并通过security.token_storage设置和保存到会话中,以实现用户登录。虽然security.context仍可使用,但建议为即将来临的Symfony3做更新准备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Symfony 2.6.x – Symfony 3.0.x

从symfony 2.6开始security.context已弃用,赞成security.token_storage。控制器现在可以简单地是:

use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use YourNameSpace\UserBundle\Entity\User;

class LoginController extends Controller{

public function registerAction()

{

$user = //Handle getting or creating the user entity likely with a posted form

$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());

$this->get('security.token_storage')->setToken($token);

$this->get('session')->set('_security_main', serialize($token));

}

}

虽然这已被弃用,您仍然可以使用security.context,因为它已被做成向后兼容。只是准备更新它为Symfony 3

Symfony 2.3.x

要在symfony 2.3中完成此操作,您不能再在安全上下文中设置令牌。您还需要将令牌保存到会话。

假设安全文件具有防火墙,如:

// app/config/security.yml

security:

firewalls:

main:

//firewall settings here

和控制器动作类似:

use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use YourNameSpace\UserBundle\Entity\User;

class LoginController extends Controller{

public function registerAction()

{

$user = //Handle getting or creating the user entity likely with a posted form

$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());

$this->get('security.context')->setToken($token);

$this->get('session')->set('_security_main',serialize($token));

//Now you can redirect where ever you need and the user will be logged in

}

}

对于令牌创建,您将要创建一个UsernamePasswordToken,它接受4个参数:用户实体,用户凭据,防火墙名称,用户角色。您不需要提供令牌有效的用户凭据。

我不是100%确保设置在security.context的令牌是必要的,如果你只是要立即重定向。但它似乎没有伤害,所以我离开了它。

然后重要的部分,设置会话变量。变量命名约定是_security_,后面是您的防火墙名称,在这种情况下,主要使用_security_main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值