我有一个laravel应用程序,最近安装了laravel护照。该应用程序进行了一系列内部api调用以检索数据。使用laravel护照,只要我进行这些内部api调用,它就会返回未经身份验证的错误消息。
我已经在我的api路由中添加了“ auth:api”中间件,并希望能够在内部访问它们。我是否需要发送带有请求的承载令牌以允许请求通过。另外,我将如何生成此令牌?
这是带有调用以进行内部api调用的代码示例。
public function postToApi($url, $data) {
$req = Request::create($url, 'POST', $data);
try {
$res = app()->handle($req);
} catch (Exception $e) {
return "not found";
}
}
以下是路线外观的示例
Route::group(['middleware' => 'auth:api', 'prefix' => 'api', 'namespace' => 'Modules\Forum\Http\Controllers'], function(){
Route::get('reply/{id}', 'ReplyApiController@show' );
Route::get('thread/{id}', 'ThreadApiController@show' );});
答案 0 :(得分:2)
第一种解决方案是将其添加到根文件夹的.htaccess
(不仅在公用文件夹内部)
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
您的Kernel.php
中间件组中的第二个解决方案。
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
第三个解决方案
/**
/* Indicates if cookies should be serialized.
/*
/* @var bool
*/
protected static $serialize = true;
在Http/Middleware/EncryptCookies.php
中为我修复了该问题。