2017-02-07 4 views
0

に保存されたトークンにアクセスできません。 。は、私は、コールバック関数(<a href="https://github.com/tuupola/slim-jwt-auth" rel="nofollow noreferrer">https://github.com/tuupola/slim-jwt-auth</a>)と容器にトークン保存する指示に従った容器

$app->get("/user", 'getUsers'); 

function getUsers($req, $res, $args) { 
    $decode = $this->jwt; 
    print_r($decode); 
} 
+0

の可能性のある重複[アクセス$ slim3でルート内でこの「がないときは、オブジェクトのコンテキストで$これを使用する」は動作しません](http://stackoverflow.com/questions/40362978/access-this-スリム・イン・ア・ルート・イン・スリム3作品ではなく、これをオブジェクトで使用する場合) – jmattheis

答えて

1

あなたのルート定義はUsing $this when not in object contextエラーをスローします。 $thisにアクセスするには、代わりにクロージャーを使用する必要があります。ドキュメントのclosure bindingを参照してください。

$app->get("/user", function ($request, $response, $arguments) { 
    $decode = $this->jwt; 
    print_r($decode); 
}); 

またはあなたが$this経由で復号化されたトークンにアクセスすることができ、上記のコードのいずれかで

$getUsers = function ($request, $response, $arguments) use ($container) { 
    $decode = $this->jwt; 
    print_r($decode); 
}; 

$app->get("/user", $getUsers); 

。第1の例が好ましい。

$ curl --include http://localhost:8081/user --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.mHEOMTUPhzNDAKheszd1A74EyLmKgy3PFdmKLg4ZNAE" 
HTTP/1.1 200 OK 
Host: localhost:8081 
Connection: close 
X-Powered-By: PHP/7.0.12 
Content-Type: text/html; charset=UTF-8 
Content-Length: 84 

stdClass Object 
(
    [sub] => 1234567890 
    [name] => John Doe 
    [admin] => 1 
) 
1

あなたは状態にリンクされている命令:認証が成功した場合にのみ、

コールバックが呼び出されます。引数に デコードされたトークンを受け取ります。コールバックがbooleanを返す場合false 認証は強制的に失敗します。

テスト時にこの要件を満たしていますか、つまり正常に認証されていますか?テスト時にprint_r($decode)の代わりにvar_dump($decode)を使用することも検討してください。

+0

ありがとう!トークンが正しく受信されました。私はこのルートをパススルーしませんでした。 – robert

関連する問題