注册后自动登录 php,php – 自动注册后用户身份验证
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
總結
以上是生活随笔為你收集整理的注册后自动登录 php,php – 自动注册后用户身份验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 上一个月的开始和结束,php获取
- 下一篇: php swoole 内存,swoole