2015-04-17 3 views
2

Я применил findIdentityByAccessToken в модели моих пользователей.Yii2 REST API Basic Auth (SESSION OVERRIDE)

public static function findIdentityByAccessToken($token, $type = null) 
{ 
    $apiUser = ApiAccess::find() 
     ->where(['access_token' => $token]) 
     ->one(); 
    return self::findOne(['id' => $apiUser->idUser]); 
} 

В браузере, если я вошел в систему, я могу ударить АНИ получить конечную точку, введите свой токен аутентификации и проверки подлинности должным образом.

Однако, если я не вошел в систему, меня подталкивают обратно на мой экран входа в систему. Используя клиент для отдыха, я возвращаю HTML-адрес экрана входа в систему.

Это указывает на 1 из 2 вещей в моих глазах. Либо в текущем состоянии для доступа к этому модулю api требуется «вход в сеанс». Или # 2, я неправильно передаю токен аутентификации.

Мой заголовок запроса:

Accept: */* 
Cache-Control: no-cache 
Authentication: Basic base64('mytoken':) 

Как переопределить мое поведение входа "по умолчанию"? ИЛИ Правильно отправить токен аутентификации?

ответ

0

Вы можете переопределить метод входа и loginByAccessToken из модели Пользователь, чтобы изменить поведение входа. См: http://www.yiiframework.com/doc-2.0/yii-web-user.html

С другой стороны, , что вы, вероятно, нужно (в случае, если у вас нет его еще) это написать контроллер и логин действия. Затем реализуем класс, проходящий от AuthMethod и метод проверки подлинности (и, возможно, метод вызова). После этого вы можете добавить этот класс как поведение ко всем вашим контроллерам (или даже лучше сделать все, что ваш контроллер наследует от одного контроллера с таким поведением).

Plase взгляните на эту ссылку: http://www.yiiframework.com/doc-2.0/guide-rest-authentication.html