Symfony Eylem Güvenlik - başarılı kimlik doğrulamasının ardından iletmek için nasıl?

3 Cevap php

Bir kullanıcı tespit edilmemiş ise uygulamaların settings.yml dosyasında tanımlanan Symfony'nin Eylem Güvenliği ile o varsayılan oturum açma eylemi iletilir. Nasıl kullanıcı kullanıcı sonra başlangıçta istenen eylem iletmek istiyorum başarıyla doğrulandıktan?

3 Cevap

İlk kullanıcı oturumuna, giriş eylem mağaza referer vurdu:

if(!$this->getUser()->hasParameter('referer'))
{
  $this->getUser()->setParameter('referer',$this->getRequest()->getReferer());
}

giriş başarılı olduğunda ve sonra, depolanan referer için kullanıcı yönlendirme:

$this->redirect($this->getUser()->getParameter('referer'));

Siz sfGuardPlugin tam bir örnek var:

http://www.symfony-project.org/plugins/sfGuardPlugin

Daha basitçe ...

$this->getUser()->setReferer($this->getRequest()->getReferer());

gibi

setReferer($referer)
{
  if (!$this->hasAttribute('referer'))
    $this->setAttribute('referer', $referer);
}

Konuyla ilgili bir sorun, ancak bunun yerine farklı bir eylemden ileri gerçekleştirmek için çalışıyor:

SfGuard işareti-sayfa yönlendirme haline wil çünkü yönlendirme yönlendirmek için çalışıyor sfGuard tarafından korunan bir eylem varsa, içeri Bu imzaladıktan sonra bir yönlendirme döngüsü elde edeceksiniz. Unutulmuş olacak bir flaş kullanmak zaten çözüm içeri imzalı eğer bir eylem, bir yanlış bir sayfaya yönlendiriliyorsunuz olabilir, yani yukarıdaki gibi oturum eylem saklı eğer bir parametre veya nitelik birden fazla isteği üzerine kaydedilebilir. Bu sfGuardAuthActions ve executeSignin yönteminde aşağıdaki kodu ile yapılabilir:

if ($this->getUser()->hasFlash('referer'))
{
  $this->getUser()->setFlash('referer', $this->getUser()->getFlash('referer'));
}
else
{   
  $this->getUser()->setFlash('referer', $this->getRequest()->getReferer());
}

Ilk blok flaş sıfırlayarak, bu oturum açma girişimleri arasında, ve eylem ile müdahale edemez, bir flaş kullanılarak diğer sayfalara oturum tarafından unutulmuş olmayacak.