2014-06-07 3 views
4

다른 컨트롤러를 상속받은 주 컨트롤러가 있습니다. 코드는 다음과 같습니다.인증 후 사용자를 이전 페이지로 리디렉션 (yii2)

public function init() 
{ 
    $this->on('beforeAction', function ($event) { 
     ... 

     if (Yii::$app->getUser()->isGuest) { 
      $request = Yii::$app->getRequest(); 
      // dont remember login page or ajax-request 
      if (!($request->getIsAjax() || strpos($request->getUrl(), 'login') !== false))     { 
       Yii::$app->getUser()->setReturnUrl($request->getUrl()); 
       } 
      } 
     } 
     ... 
    }); 
} 

captcha가있는 페이지를 제외한 모든 페이지에서 완벽하게 작동합니다. captcha가있는 모든 페이지가 다음과 같이 리디렉션됩니다. -/captcha /? v = xxxxxxxxxxxxxx

개체가 Yii :: $ app-> getRequest()로 기록 된 경우 captcha가있는 페이지의 경우 두 번 사용됩니다 . 처음으로 객체가 corect이고, 두 번째로 captcha 객체를 봅니다. yii로 어떻게이 문제를 해결할 수 있습니까? captcha에 대한 요청을 추적하지 못할 가능성이 있습니까?

public function actions() 
{ 
    return [ 
     'captcha' => [ 
      'class' => 'yii\captcha\CaptchaAction', 
     ], 
    ]; 
} 

이 컨트롤러는 이런 일이 포함되어 있습니까 :

답변

1

기본 (생성) 컨트롤러는 다음과 같이 사용한다?

이것은 captcha를 표시하는 데 사용되는 "captcha"동작 (이미지를 반환 함)을 의미합니다. captcha가 표시된 페이지가 있으면 돌아 오려는 페이지 다음에 이미지가 호출됩니다. 따라서 방문한 최신 페이지는 보안 문자가있는 페이지입니다.

이 작업을 필터링해야한다고 생각합니다.

또 다른 가능성은 기본 $controller->goBack() 방법을 사용할 수 있습니다. 나는 이것이 디폴트로 returnUrl의 등록을 처리한다고 생각한다.

참조 : Class yii\web\Controller

+0

답변을 주셔서 감사합니다 – romany4

+0

나는 그게 정답이라고 생각하지 않습니다. 맞춤 returnUrl은 무엇입니까? 예를 들어 returnUrl에서 controllers \ actions \ behaviors를 제외 시키려면 어떻게해야합니까? $ controller-> goBack()이 나를 다시 돌려 줄 것입니다 ... 그래서 어떤 곳에서 조건을 추가해야합니다 .... – user1954544

0

Guid security authorization

를 사용하여 액세스 제어 필터 (ACF) 컨트롤러이다.

use yii\web\Controller; 
use yii\filters\AccessControl; 

class SiteController extends Controller 
{ 
    public function behaviors() 
    { 
     return [ 
      'access' => [ 
       'class' => AccessControl::className(), 
       'only' => ['login', 'logout', 'signup'], 
       'rules' => [ 
        [ 
         'allow' => true, 
         'actions' => ['login', 'signup'], 
         'roles' => ['?'], 
        ], 
        [ 
         'allow' => true, 
         'actions' => ['logout'], 
         'roles' => ['@'], 
        ], 
       ], 
      ], 
     ]; 
    } 
    // ... 
} 
+0

returnUrl을 저장하는 예제가 있습니까? 문제는 행동에 대한 것이고 반환 URL을 저장하는 것이 었습니다 ... = \ – user1954544

관련 문제