Yii2 Rest - Benutzerdefinierte Aktion und OPTIONEN Methode

Ich habe Probleme mit der folgenden Aktion "/login" route Aktion in meinem UsersController Klasse

public function actionLogin(){
        $data = Yii::$app->getRequest()->getBodyParams();
        $model = new Usuario();

        //Validamos que se hayan recibido los campos
        if(empty($data['email']) || empty($data['password'])){
            throw new \yii\web\BadRequestHttpException("Debe ingresar email y password");
        }

        //Validamos usuario y contraseña
        $usuario = $model->findByUsername($data['email']);
        if(empty($usuario) || !$usuario->validatePassword($data['password'])){
            throw new \yii\web\UnauthorizedHttpException("Usuario y/o contraseña incorrectos");
        }
        return $usuario;
    }

Ist die situation, dass ich mit POST-Methode zum ausführen der login, und ich rufe diese route aus einer anderen Domäne, so dass der frontend-Bibliothek zunächst versuchen, Aufruf /login route mit OPTIONEN Methode zu überprüfen, ob es erlaubt ist oder nicht anrufen /login mit POST..

Das problem ist, dass die eingebaute Funktionalität von yii2 rest ActiveController ist nur für /users und /users/{id}

Wenn ich manuell hinzufügen, das /login route werden sowohl in der POST und OPTIONEN durch Aktionen verbFilter, dann yii versucht, um tatsächlich rufen Sie die login-action mit der OPTIONS-Anfrage. Ich meine, es ist Versuch, eine login. Natürlich kann es nicht, weil es nicht senden von E-Mails und Passwörter Felder, aber ich sehe einen Fehler in der log-Datei.

So, meine Frage ist... gibt es eine Möglichkeit zu konfigurieren, korrekt, diese "custom" - Routen, Aktionen und OPTIONEN führt transparent? Denn ich gehe davon aus, dass der login-Aktion, die nicht ausgeführt werden, beim Aufruf mit den OPTIONEN, aber statt nach Rückkehr direkt den OPTIONEN erlaubt, Methoden-Header.

Update-Info: Added URL-manager-Regeln

'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => true,
        'showScriptName' => true,
        'rules' => [
            [
                'class' => 'yii\rest\UrlRule', 
                'controller' => ['v1/users'],
                'pluralize' => false,
                'tokens' => [
                    '{id}' => '<id:\\w+>'
                ]
            ],
            //Rutas usuario
            'v1/login' => '/v1/users/login'
        ],        
    ],
InformationsquelleAutor edrian | 2015-05-25
Schreibe einen Kommentar