Essayer d'obtenir le clé d'autorisation d'en-tête dans le contrôleur pour créer un API . La demande provient de violoneux.
$headers = Apache_request_headers();
Et le $ header contient un tableau.
Array
(
[User-Agent] => Fiddler
[Host] => localhost:8000
[Content-Length] => 102
[Authorization] => TestKey
)
Si j'essaie comme ceci d'extraire le Authorization, son erreur de projection.
$header['Authorization]
Erreur:
Undefined index: Authorization
Essayé de nombreuses façons d'obtenir l'autorisation, mais sans rien travailler. Est-il possible d'aller chercher ça?
Pour obtenir les en-têtes de la demande, vous devez utiliser la classe Request
public function yourControllerFunction(\Illuminate\Http\Request $request)
{
$header = $request->header('Authorization');
// do some stuff
}
https://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header
Bien que ce soit un sujet ancien, il pourrait être utile à quelqu'un ...
Dans les nouvelles versions Laravel), il est possible d’obtenir directement le jeton d’autorisation support en appelant la méthode bearerToken()
de Illuminate\Http\Request
:
Auth::viaRequest('costom-token', function (Request $request) {
$token = $request->bearerToken();
// ...
});
Ou directement depuis un contrôleur:
public function index(Request $request) {
Log::info($request->bearerToken());
// ...
}
Vous pouvez essayer d'installer jwt (authentification de jeton Web JSON pour Laravel & Lumen) http://jwt-auth.com via composeur.
Et créez un middleware qui vérifie s’il existe votre clé de jeton dans la demande d’en-tête.
Après avoir installé jwt, votre middleware pourrait être comme suit
<?php
namespace App\Http\Middleware;
use Closure;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
use Tymon\JWTAuth\Exceptions\TokenInvalidException;
class VerifyJWTToken
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
try {
$user = JWTAuth::toUser($request->header('token'));
} catch (JWTException $e) {
if ($e instanceof TokenExpiredException) {
return response()->json([
'error' => 'token_expired',
'code' => $e->getStatusCode()
], $e->getStatusCode());
}
else if($e instanceof TokenInvalidException){
return response()->json([
'error' => "token_invalid",
'code' => $e->getStatusCode()
], $e->getStatusCode());
}
else {
return response()->json([
'error' => 'Token is required',
'code' => $e->getStatusCode(),
], $e->getStatusCode());
}
}
return $next($request);
}
}
J'ai utilisé par exemple Token pour une clé d'en-tête, mais vous pouvez le nommer comme vous le souhaitez.
Ensuite, vous pouvez l'utiliser sur n'importe quel contrôleur