Sono impressionato da quanto sia stato semplice creare una API REST in Yii2. Tuttavia, ho qualche problema a capire l'autenticazione di base. Le mie esigenze sono assolutamente semplici e vorrei che la mia soluzione seguisse l'esempio.RIPOSO Yii2 Semplifica BasicAuth
Ho bisogno dell'autenticazione token di base qui. Per ora non sono nemmeno contro la codifica, ma ecco cosa ho fatto fino ad ora.
devo tabella del database di tenere il mio ApiAccess gettone singolare (id, access_token)
ApiAccess.php - Modello - NOTA: IDE mostra errore di sintassi in questa prima linea
class ApiAccess extends base\ApiAccessBase implements IdentityInterface
{
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token' => $token]);
}
}
Module .php - in funzione init()
\Yii::$app->user->enableSession = false;
ho fatto un ApiContro ller che ogni successiva sostantivo estende
ApiController.php
use yii\rest\ActiveController;
use yii\filters\auth\HttpBasicAuth;
use app\models\db\ApiAccess;
class ApiController extends ActiveController
{
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
];
return $behaviors;
}
}
Così com'è, l'accesso a un endpoint api nel browser richiede un nome utente e una password. Richiesta tramite client REST visualizza errore di accesso.
Come legare correttamente HttpBasicAuth al modello ApiAccess?
O
Come posso hardcode un token di accesso api? (La prima opzione è ovviamente la migliore)
Ho questo funzionamento, e vedere come dovrebbe funzionare ora. Grazie. Ho ancora un problema relativo all'override dell'autenticazione LDAP già presente solo per questo modulo. Pubblicherò una domanda a parte se non riesco a risolverlo da solo. – Joshua
Il findOne non crittografa la password per vedere se corrisponde a password_hash - come faccio a incorporare validatePassword con findOne? – Cymbals
@Cymbals http://www.yiiframework.com/doc-2.0/guide-security-passwords.html –