Невозможно перенаправить на страницу входа, если пользователь не вошел в систему - PullRequest
1 голос
/ 21 марта 2019

У меня есть функция, которая выполняется при вызове веб-службы.Если пользователь не вошел в систему, я хочу перенаправить на страницу входа.Я использую интерфейс AngularJS.

Перенаправление в части else.

Это функция:

public function postCustomerGetAction(Request $request) {
$tokenValidationObj = new LoginController();
$isValid = $tokenValidationObj->postValidateUserTokenAction($request);

// print_r($this->customer_id);exit;
// print_r($this->association_id);

// print_r($isValid);exit;
if($isValid == 1){
    $log = new LogController();     
    $log->getLogJsonBody($this->get('logger'),$request);
    $display = new Result();
    try {
        $schema = 'customerGet.json';
        $validation = new InputValidation();
        $validationObj = $validation->dataValidation($request, $schema);
        $getKeyMap = array (
                "_customer_id"      => "customerId",
                "_customer_name"    => "customerName"
        );
        $getFunction = 'svk_apt_get_customer';
        $conObj = new ConnectionController();
        $conObj->beginTransaction();
        $dbres = $conObj->buildQuery($getFunction, $getKeyMap, $validationObj);
        $result = $display->getJsonResult($dbres);
        $conObj->dbCommitTransaction();
    } catch ( Exception $ex ) {
        $log->getExceptionLog($this->get('logger'),$ex);
        $result = $display->getJsonException($ex);
    }
    return $result;
}else{
    $result = $this->container->getParameter('email_template_url');
    // print_r($result);exit;
    return new RedirectResponse($result);
    // header('Location: https://stackoverflow.com');exit;
    // return $this->redirect('https://stackoverflow.com');
}               

}

В ответе я вижу следующий html, но он не перенаправляет на указанную мной страницу.HTML в ответе:

<!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8" />
            <meta http-equiv="refresh" content="0;url=https://stackoverflow.com" />

            <title>Redirecting to https://stackoverflow.com</title>
        </head>
        <body>
            Redirecting to <a href="https://stackoverflow.com">https://stackoverflow.com</a>.
        </body>
    </html>

Как мне перенаправить, когда веб-сервис вызывается и пользователь не вошел в систему?

1 Ответ

0 голосов
/ 21 марта 2019

Веб-сервис / API не должен перенаправлять веб-интерфейс на другую страницу.Если вы используете Angular для взаимодействия с этим веб-сервисом, вы должны просто вернуть статус / флаг «не вошли в систему», а затем заставить Angular выполнять перенаправление.

Для создания пользовательского ответа вы можете обратиться к: Ответ Symfony Security 401 вместо перенаправления

Достаточно HTTP Status 401.Подробнее об этом состоянии можно узнать здесь: https://httpstatuses.com/401

Angular должен определить это и затем перенаправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...