SORU
4 Mayıs 2011, ÇARŞAMBA


Post-kayıt otomatik kullanıcı kimlik doğrulaması

Olduğumuz bina bir iş uygulamasından bir yere kadar Symfony 2, ve yaptığım çalışma içine biraz Budak ile kullanıcı kayıt akışı: sonra kullanıcı hesabı oluşturur, öyle olmalılar otomatik giriş ile bu kimlik bilgilerini, yerine hemen olmak zorunda sağlamak için kimlik bilgilerini yeniden.

Herkes bu ile herhangi bir deneyim oldu, ya da doğru yönde beni işaret edebilir?

CEVAP
24 EKİM 2013, PERŞEMBE


Symfony 2.6.x

Symfony olarak 2.6 security.context security.token_storage lehine önerilmiyor. Kontrolör şimdi sadece olabilir:

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);
        //We no longer need to manually save the token to the session either. 
        //The token storage handles that
    }

}

Bu kaldırılmış olsa da hala geriye doğru uyumlu olacak şekilde yapılmış security.context kullanabilirsiniz. Symfony 3 için güncelleme için hazır olacak

Güvenlik için 2.6 değişiklikler hakkında daha fazla buradan okuyabilirsiniz: https://github.com/symfony/symfony/blob/2.6/UPGRADE-2.6.md

Symfony 2.3.x

Symfony 2.3 bunu yapmak için artık sadece güvenlik bağlamında simge olarak ayarlayabilirsiniz. Ayrıca, oturum belirteci kaydetmeniz gerekir.

Bir güvenlik duvarı gibi bir güvenlik dosyası varsayarsak:

// app/config/security.yml
security:
    firewalls:
        main:
            //firewall settings here

Ve denetleyici bir eylem çok benzer:

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
    }

}

* *9, Bu 4 parametre kabul eder bir oluşturmak için isteyeceksiniz token oluşturma: Kullanıcı Varlık, Kullanıcı Kimlik bilgileri, Güvenlik Duvarı Adı, Kullanıcı Rolleri. Dont kullanıcı belirteci geçerli olması için kimlik bilgilerini sağlamanız gerekir.

100% security.context üzerinde token ayar varsa hemen yönlendirmek için gidiyoruz eğer gerekli olduğundan emin değilim. Ama yok o kadar zamanım kaldıysa zarar vermek gibi görünüyor.

O zaman önemli kısmı, oturum değişkeni ayarı. Değişkenleri adlandırma _security_ güvenlik duvarı adın, bu durumda main ardından _security_main yapıyor

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Wills

    David Wills

    31 Aralık 2007
  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • kremosakhaz

    kremosakhaz

    25 AĞUSTOS 2006