>  기사  >  백엔드 개발  >  Symfony 등록 후 자동 사용자 인증을 구현하는 방법은 무엇입니까?

Symfony 등록 후 자동 사용자 인증을 구현하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-21 17:41:11620검색

How to Implement Automatic User Authentication After Registration in Symfony?

등록 후 자동 사용자 인증

Symfony 2 비즈니스 애플리케이션을 구축하는 과정에서 자동 사용자 인증의 필요성에 직면하는 경우가 많습니다. 등록 후. 이를 달성하는 방법은 다음과 같습니다.

Symfony 4.0 이상

자동 인증에 대한 접근 방식은 이전 버전의 Symfony와 동일합니다. 다음은 AbstractController를 사용하는 예입니다.

use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use YourNameSpace\UserBundle\Entity\User;

class LoginController extends AbstractController
{
    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->container->get('security.token_storage')->setToken($token);
        $this->container->get('session')->set('_security_main', serialize($token));
        // The user is now logged in, you can redirect or do whatever.
    }
}

Symfony 2.6.x - Symfony 3.0.x

이 버전에서는 보안을 위해 security.context가 더 이상 사용되지 않습니다. 토큰_저장. 업데이트된 컨트롤러는 다음과 같습니다.

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));
    }
}

Symfony 2.3.x

이 버전에서는 보안 컨텍스트에서 토큰을 설정하는 것만으로는 충분하지 않습니다. 또한 이를 세션에 저장해야 합니다.

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을 사용해야 합니다.

위 내용은 Symfony 등록 후 자동 사용자 인증을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.