2

私は Filsh/yii2-oauth2-server を使用しています。

$_pos を使用してクライアント トークンを使用し、API にアクセスできます。

コントローラーで:

if (!isset($_post['token'])){
//exeption
}
else{ 
token = $_post('token');
}
if ((Accesstokens::isAccessTokenValid($token))) {
// do some thing.
}
in my Accesstokens model :

public static function isAccessTokenValid($token)
    {
        if (empty($token)) {
            return false;
        }
        $query = (new \yii\db\Query())
            ->select(['access_token','expires'])
            ->from('oauth_access_tokens')
            ->where(['access_token' => $token])
//            ->limit(10)
            ->one();
        if (empty($query)) {
            return false;
        }
        $expire = $query['expires'];
        return $expire > date('Y-m-d h:i:s');
    } 

パスワード (user_credential) トークンを使用すると、以下を使用してベアラー認証を実装できます。

public function behaviors()
    {
        return ArrayHelper::merge(parent::behaviors(), [
            'authenticator' => [
                'class' => CompositeAuth::className(),
                'authMethods' => [
                    ['class' => HttpBearerAuth::className()],
                    ['class' => QueryParamAuth::className(), 'tokenParam' => 'accessToken'],
                ]
            ],
            'exceptionFilter' => [
                'class' => ErrorToExceptionFilter::className()
            ],
        ]);
    }

ただし、この方法は、ユーザーなしでクライアントを認証するために oauth_client テーブルではなく、認証ユーザーでユーザーテーブルを使用しています。

ユーザーテーブルなしで、クライアントテーブルのみでトークンベースを認証する方法は?

Request:
GET http://myapi.com/api/www/index.php/oauth2/token
grand_type = client_credentials
client_id = id1
client_secret = secret1

Response:
"access_token": "thisistheccesstoken",
"expires_in": 31104000,
"token_type": "Bearer",
"scope": "default"

Request:
GET http://myapi.com/api/www/index.php/oauth2/v1/get/frogs
HEADER Authorization: Bearer thisistheaccesstoken

Response:
all the frogs

使い方: HEADER 認可: Bearer? 誰でも助けることができますか?

4

0 に答える 0