【发布时间】:2018-05-15 12:16:21
【问题描述】:
我使用 laravel 5.5 和 tymon/jwt-auth 作为我的 jwt 服务提供者。 当我使用控制器中的 JWTAuth 外观时 - 一切正常 - 我得到了令牌并且可以操作任何东西。
当我尝试在我创建的自定义中间件中使用 JWTAuth 外观时 - 标头已消失且请求为空。 可以肯定的是,在 laravel 的中间件中这不是问题,因为 JWT 的中间件可以通过 headers 获取令牌。
我在端口 80 上运行 nginx 反向代理,它重定向到端口 8080 上的 apache 服务器,而 apache 运行 laravel 项目。
有人推荐吗?
代码:
api.php
Route::get('organizations', 'OrganizationController@index')->middleware('org');
内核.php
'org' => \App\Http\Middleware\OrganizationMiddleware::class,
OrganizationMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
use JWTAuth;
class OrganizationMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$token = JWTAuth::getToken();
return response()->json(['token' => $token], 200);
// return $next($request);
}
}
我的尝试都没有成功。中间件回答,但请求完全是空的。所以我无法获取标头或令牌或任何其他参数。 真奇怪。也在本地测试,仅在 apache 上,并使用适当的 .htaccess 文件。还启用了 CORS 以防万一。 令牌完全为空。
更新:
composer.json
"require": {
"php": ">=5.6.4",
"aws/aws-sdk-php-laravel": "~3.0",
"illuminate/contracts": "^5.5",
"laravel/framework": "5.5.*",
"laravel/tinker": "~1.0",
"spatie/laravel-fractal": "^5.2",
"tymon/jwt-auth": "0.5.11"
},
【问题讨论】:
-
你能提供一些代码吗?
-
已添加到帖子中。谢谢:)
-
你试过没有中间件吗?
-
是的,没有中间件也可以正常工作。
-
您通过这个 GET 请求发送了哪些实际输入数据? ...什么查询字符串变量?
标签: php laravel request middleware jwt-auth