Horizon、Telescope 正式环境中使用 Sanctum 的 token 登录
来源
stackoverflow.com/questions/710662...
创建中间件
随便取个名 CheckTokenAndAddToHeader.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
/**
* This middleware check if the request has _token key and adds this into the Authorization header to take advantage of
* the sanctum middleware
*/
class CheckTokenAndAddToHeader
{
/**
* Handle an incoming request.
*
* @param Request $request
* @param Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return Response|RedirectResponse
*/
public function handle(Request $request, Closure $next): Response|RedirectResponse
{
if (isset($request->_token)) {
$request->headers->set('Authorization', sprintf('%s %s', 'Bearer', $request->_token));
}
return $next($request);
}
}
horizon、telescope 的 config 文件,middleware 改 web
为 api
。
添加新增的中间件
use App\Http\Middleware\CheckTokenAndAddToHeader;
'api' => [
CheckTokenAndAddToHeader::class,
EnsureFrontendRequestsAreStateful::class,
'throttle:api',
SubstituteBindings::class,
],
访问
带上 ?_token=你的token
即可。比如:
- api.example.com/horizon?_token=59%...
- api.example.com/telescope ?_token=59%7CIT4U5m3shDOGEOW55glG0tqvgTzL6aF0KZE94frA
推荐文章: