Пожалуйста, расскажите мне о моем коде Yii2 о аутентификации RESTFul по токену - PullRequest
0 голосов
/ 15 октября 2018

Я целый день смотрю в Google и до сих пор не понимаю, как добиться RESTFul httpBasicAuth с помощью токена.

Во-первых, я хотел бы спросить, могу ли я использовать RESTFul HttpBasicAuth без Https?

Затем ниже приведен мой код для проверки подлинности Yii2 RESTFul HttpBasicAuth, надеюсь, кто-то может потратить некоторое время на проверкумой код и направьте меня, что не так в моем коде.

Сначала это мой конфиг настройки yii2 о компоненте User Application:

'user' => ['identityClass' => 'common\models\Users',
'enableAutoLogin' => false
],

, ниже приведен фрагмент моего общего \ models \ Users IdentityClass

пространства имен common\ models;

use Yii;
use yii\base\NotSupportedException;
use yii\web\IdentityInterface;
use app\models\Ostoken;
class Users extends \yii\db\ActiveRecord implements IdentityInterface
{
public static function findIdentityByAccessToken($token, $type = null) {
        /* Compulsory for RESTFul*/
        //         die("trying...");
        //         throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');

        file_put_contents("/var/www/html/y2api/logs/RESTFul_login_".date("Y-m-d"), date("H:i:s").":".$token."\r\n", FILE_APPEND);

        $apiUser = Ostoken::find()
        ->where(['token' => $token])
        ->one();

        return static::findOne(['username' => $apiUser->username]);
    }
}

, затем я пытаюсь вызвать спокойный URL-адрес по http://192.168.33.10/api/Banktransactions?access-token=xxxxxxxx

, тогда я получаю следующую ошибку в формате json:

{
    "name": "Unauthorized",
    "message": "Your request was made with invalid credentials.",
    "code": 0,
    "status": 401,
    "type": "yii\\web\\UnauthorizedHttpException"
}

, как вывидно, я поместил file_put_contents в findIdentityByAccessToken, но он никогда не выполняется.

1 Ответ

0 голосов
/ 15 октября 2018

Первый вопрос:

Во-первых, я хотел бы спросить, могу ли я использовать RESTFul HttpBasicAuth без Https?

Ответ: Можно, но:

Поскольку маркер доступа может использоваться для уникальной идентификации и аутентификации пользователя, запросы API всегда должны отправляться через HTTPS для предотвращения атак типа «человек посередине» (MitM).(https://www.yiiframework.com/doc/guide/2.0/en/rest-authentication#authentication)

Второй ... вопрос?:

Я на 100% уверен, что это потому, что CORS. Проверьте это:

https://www.yiiframework.com/doc/api/2.0/yii-filters-cors

Когда-нибудь пытались достичь URL через localhost? Если это так, и это сработало, вам нужно настроить фильтр CORS, чтобы можно было отправлять запросы на ваш сервер.

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