Laravel 5.3 API路由不保存请求之间的会话
我试图通过Laravel的5.3API路由逻辑和JWT构建一个静态HTML查看器。这些文件都存储在S3上,需要进行保护,所以我认为最好的方法是制作一种代理,让所有文件都通过。这样,我就可以从API请求中检查用户的令牌,并相应地加载文件 第一个文件加载良好Laravel 5.3 API路由不保存请求之间的会话,laravel,jwt,Laravel,Jwt,我试图通过Laravel的5.3API路由逻辑和JWT构建一个静态HTML查看器。这些文件都存储在S3上,需要进行保护,所以我认为最好的方法是制作一种代理,让所有文件都通过。这样,我就可以从API请求中检查用户的令牌,并相应地加载文件 第一个文件加载良好 http://example.com/api/proxy/file.html?token={token} 当HTML文件试图从自身加载文件时,会出现问题。当我去掉身份验证函数时,它就工作了,所以我知道获取文件时不会出现问题。这是因为令牌不会附
http://example.com/api/proxy/file.html?token={token}
当HTML文件试图从自身加载文件时,会出现问题。当我去掉身份验证函数时,它就工作了,所以我知道获取文件时不会出现问题。这是因为令牌不会附加到未来的请求中。它发送此消息时不带令牌
http://example.com/api/proxy/some_image.png
我试图将以下代码添加到我的令牌检查器逻辑中
public function __construct(JWTAuth $jwtAuth)
{
$this->middleware(function ($request, $next) use ($jwtAuth) {
if (!$jwtAuth->getToken()) {
if (!Auth::user()) {
return response()->error('The token could not be parsed from the request', 400);
} else {
$this->authUser = Auth::user();
}
} else {
$this->authUser = $jwtAuth->parseToken()->authenticate();
Auth::setUser($this->authUser);
}
return $next($request);
});
}
但由于某些原因,这不起作用。当第一个.html加载令牌时,它会尝试使用Laravel的Auth中间件对用户进行身份验证,但Auth::user()在图像请求中返回null。如果您使用的是routes/api.php文件,该中间件处理api路由组中未加载的会话。尝试将API路由移动到routes.php,看看这是否解决了您的问题该中间件的名称是什么?我将尝试将其添加到代理路由。在app/http/kernel.php中,在web middlware组中检查StartSession中间件。将该行复制到itI下面的API中间件组中我刚才尝试过,但仍然不记得请求之间的身份验证用户。我也按照您最初的建议将其放入web路由中,但仍然收到相同的错误。