2010-05-27 18 views
0

我希望能夠把用戶請求的頁面登錄後,但這並不與sfGuard發生。 **我的註冊操作需要登入)**的Symfony /原則/ SfGuardPlugin:重定向到請求的頁面(路線),而不是引薦

在列表頁面[01​​ - >用戶點擊「註冊」的鏈接[@Register =寄存器/索引] - >用戶被帶到「登入」通過sfGuard 提供頁面 - >登錄後,用戶被引導返回到列表頁面(而不是註冊) 這是很煩人!但是合乎邏輯的,因爲引用者是列表頁面。

我怎樣才能改變邏輯來@Register引薦? Pl幫助。感謝

public function executeSignin($request) 
    { 
    $user = $this->getUser(); 
    $this->logMessage('Signin>>> form - isAuth() '.$user->isAuthenticated(), 'info'); 

    if ($user->isAuthenticated()) 
    { 
     $this->getUser()->setAttribute('tenant', $this->getUser()->getGuardUser()->sfuser->Tenant->getID()); 
     return $this->redirect($user->getReferer($request->getReferer())); 
    } 

    $class = sfConfig::get('app_sf_guard_plugin_signin_form', 'sfGuardFormSignin'); 
    $this->form = new $class(); 
    $referer = $user->getReferer($request->getReferer()); 
    $this->logMessage('Signin>>> referer: '.$referer, 'info'); 
    $this->logMessage('Signin>>> referer: '.$request->getReferer(), 'info'); 

    if ($request->isMethod('post')) 
    { 
     $this->form->bind($request->getParameter('signin')); 
     if ($this->form->isValid()) 
     { 
     $values = $this->form->getValues(); 
     $this->getUser()->signin($values['user'], array_key_exists('remember', $values) ? $values['remember'] : false); 
     $this->getUser()->setAttribute('tenant', $this->getUser()->getGuardUser()->sfuser->Tenant->getID()); 

     $this->logMessage('Signin>>> sfUrl | @homepage: '.sfConfig::get('app_sf_guard_plugin_success_signin_url','@homepage'), 'info'); 
     return $this->redirect("" != $referer ? $referer : sfConfig::get('app_sf_guard_plugin_success_signin_url','@homepage')); 
     } 
    } 
    else 
    { 
     if ($request->isXmlHttpRequest()) 
     { 
     $this->getResponse()->setHeaderOnly(true); 
     $this->getResponse()->setStatusCode(401); 

     return sfView::NONE; 
     } 

     // if we have been forwarded, then the referer is the current URL 
     // if not, this is the referer of the current request 
     $user->setReferer($this->getContext()->getActionStack()->getSize() > 1 ? $request->getUri() : $request->getReferer()); 

     $this->logMessage('Signin>>> oldy: '.$request->getUri(), 'info'); 
     $this->logMessage('Signin>>> oldy: '.$request->getReferer(), 'info'); 

     $module = sfConfig::get('sf_login_module'); 
     if ($this->getModuleName() != $module) 
     { 
     return $this->redirect($module.'/'.sfConfig::get('sf_login_action')); 
     } 

     $this->getResponse()->setStatusCode(401); 
    } 
    } 

跟蹤:

May 27 10:10:14 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signin" (/login) 
May 27 10:10:14 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signout" (/logout) 
May 27 10:10:14 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_password" (/request_password) 
May 27 10:10:14 symfony [info] {sfPatternRouting} Match route "register" (/register) for /register with parameters array ( 'module' => 'register', 'action' => 'index',) 
May 27 10:10:14 symfony [info] {sfFilterChain} Executing filter "sfGuardRememberMeFilter" 
May 27 10:10:14 symfony [info] {sfFilterChain} Executing filter "sfRenderingFilter" 
May 27 10:10:14 symfony [info] {sfFilterChain} Executing filter "sfExecutionFilter" 
May 27 10:10:14 symfony [info] {registerActions} Call "registerActions->executeIndex()" 
May 27 10:10:14 symfony [info] {sfFrontWebController} Redirect to "http://cim/frontend_dev.php/login" 
May 27 10:10:14 symfony [info] {sfWebResponse} Send status "HTTP/1.1 302 Found" 
May 27 10:10:14 symfony [info] {sfWebResponse} Send header "Location: http://cim/frontend_dev.php/login" 
May 27 10:10:14 symfony [info] {sfWebResponse} Send header "Content-Type: text/html; charset=utf-8" 
May 27 10:10:14 symfony [info] {sfWebDebugLogger} Configuration 13.39 ms (9) 
May 27 10:10:14 symfony [info] {sfWebDebugLogger} Factories 50.02 ms (1) 
May 27 10:10:14 symfony [info] {sfWebDebugLogger} Action "register/index" 1.94 ms (1) 
May 27 10:10:14 symfony [info] {sfWebResponse} Send content (104 o) 
May 27 10:10:16 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signin" (/login) 
May 27 10:10:16 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signout" (/logout) 
May 27 10:10:16 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_password" (/request_password) 
May 27 10:10:16 symfony [info] {sfPatternRouting} Match route "sf_guard_signin" (/login) for /login with parameters array ( 'module' => 'sfGuardAuth', 'action' => 'signin',) 
May 27 10:10:16 symfony [info] {sfFilterChain} Executing filter "sfGuardRememberMeFilter" 
May 27 10:10:16 symfony [info] {sfFilterChain} Executing filter "sfRenderingFilter" 
May 27 10:10:16 symfony [info] {sfFilterChain} Executing filter "sfExecutionFilter" 
May 27 10:10:16 symfony [info] {sfGuardAuthActions} Call "sfGuardAuthActions->executeSignin()" 
May 27 10:10:16 symfony [info] {sfGuardAuthActions} Signin>>> form - isAuth() 
May 27 10:10:16 symfony [info] {sfGuardAuthActions} Signin>>> referer: http://cim/frontend_dev.php/ 
May 27 10:10:16 symfony [info] {sfGuardAuthActions} Signin>>> referer: http://cim/frontend_dev.php/ 
May 27 10:10:16 symfony [info] {sfGuardAuthActions} Signin>>> oldy: http://cim/frontend_dev.php/login 
May 27 10:10:16 symfony [info] {sfGuardAuthActions} Signin>>> oldy: http://cim/frontend_dev.php/ 
May 27 10:10:16 symfony [info] {sfPHPView} Render "D:/projects/cim/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/signinSuccess.php" 
May 27 10:10:16 symfony [info] {sfPHPView} Decorate content with "D:\projects\cim\apps\frontend\templates/layout.php" 
May 27 10:10:16 symfony [info] {sfPHPView} Render "D:\projects\cim\apps\frontend\templates/layout.php" 
May 27 10:10:16 symfony [info] {main} Get slot "title" 
May 27 10:10:16 symfony [info] {sfWebResponse} Send status "HTTP/1.1 401 Unauthorized" 
May 27 10:10:16 symfony [info] {sfWebResponse} Send header "Content-Type: text/html; charset=utf-8" 
May 27 10:10:16 symfony [info] {sfWebDebugLogger} Configuration 16.06 ms (10) 
May 27 10:10:16 symfony [info] {sfWebDebugLogger} Factories 50.00 ms (1) 
May 27 10:10:16 symfony [info] {sfWebDebugLogger} Action "sfGuardAuth/signin" 14.53 ms (1) 
May 27 10:10:16 symfony [info] {sfWebDebugLogger} View "Success" for "sfGuardAuth/signin" 34.44 ms (1) 
May 27 10:10:16 symfony [info] {sfWebResponse} Send content (38057 o) 
+0

有沒有人遇到過這個?我在想... – Prasad 2010-05-27 15:23:18

回答

0

我認爲得到引薦的最好辦法是$request->getReferer() 到目前爲止,它已經爲我工作好!

相關問題