2017-04-10 4 views
0

ich mich weiß, eine Umleitung zu einer URL nach einer erfolgreichen Benutzeranmeldung tun können:auf eine Route nach Benutzeranmeldung

return $this->redirect()->toUrl('/user/login?redirect=http://www.myurl.com'); 

Nun, ich mag die gleiche Sache zu einer registrierten Route tun statt:

'sso-post-login' => array(
    'type' => 'Zend\Mvc\Router\Http\Literal', 
    'options' => array(
     'route' => '/sso-post-login', 
     'defaults' => array(
      'controller' => 'Application\Controller\Index', 
      'action'  => 'sso-post-login', 
     ), 
    'may_terminate' => true, 
    ), 
), 

aber die folgenden nicht funktioniert:

return $this->redirect()->toUrl('/user/login?redirect=/sso-post-login'); 

Es trifft nicht meine Aktion:

public function ssoPostLoginAction() { 
    error_log("In sso post login action"); 
    $originUrl = Common::getCookie('sso_post_login', $this->getRequest()); 
    $sessionCookie = Common::getCookie('PHPSESSID', $this->getRequest()); 
    if (null != $sessionCookie && null != $this->getUserService()->getAuthService()->getIdentity()) { 
     $email = $this->getUserService()->getAuthService()->getIdentity()->getEmail(); 
     $jwtCredentials = $this->buildJWTLoginToken($email); 
     $originUrl .= "?jwt=" . $jwtCredentials; 
     return $this->redirect()->toUrl($originUrl); 
    } 
} 

Es leitet einfach auf die Hauptseite um, nachdem die Anmeldung abgeschlossen ist.

Antwort

2

Gibt es einen bestimmten Grund, dass Sie die volle (absolute) URL nicht auf redirect param setzen möchten? Sie könnten tun:

return $this->redirect()->toUrl("/user/login?redirect=".$this->url()->fromRoute('sso-post-login', [], ['force_canonical' => true])); 

force_canonical Option vollständige URL generieren (einschließlich Ihrer Hostname)

+0

Nein, es gibt keinen Grund, und ich bin glücklich, eine Lösung zu verwenden, die funktionieren würde. Ich habe deine Lösung ausprobiert, aber es wurde auf die Hauptseite umgeleitet, anstatt auf die "sso-post-login" umzuleiten. – Stephane

+1

Sind Sie sicher, dass Sie im Browser auf http: // www.myurl.com/sso-post-login zugreifen können? Bringt es keinen Fehler oder leitet es zur Hauptseite um? – SzymonM

+0

In der Tat, das war es. Ich hatte vergessen, es wieder in die Datei 'bjyauthorize.php' aufzunehmen. – Stephane

Verwandte Themen