Livewire会话在Laravel身份验证中间件中返回NULL
我有一个livewire组件,需要使用JWT发送请求 由于livewireLivewire会话在Laravel身份验证中间件中返回NULL,laravel,session,jwt,Laravel,Session,Jwt,我有一个livewire组件,需要使用JWT发送请求 由于livewireGET请求默认情况下不发送令牌,因此我决定修改Laravel的身份验证中间件,以便通过Laravel Auth中间件中的承载器发送我在livewire组件会话中放置的令牌 我在livewire组件中添加到会话的变量在尝试在身份验证中间件中检索时返回NULL 1.Livewire组件 <?php namespace App\Http\Livewire; class HelloWorld extends Compone
GET
请求默认情况下不发送令牌,因此我决定修改Laravel的身份验证中间件,以便通过Laravel Auth中间件中的承载器发送我在livewire组件会话中放置的令牌
我在livewire组件中添加到会话的变量在尝试在身份验证中间件中检索时返回NULL
1.Livewire组件
<?php
namespace App\Http\Livewire;
class HelloWorld extends Component
{
public function mount(TransactionCheckoutRequest $request)
{
session(['x__livewire__token' => 'put token in session' ]);
}
}
你能不能用你的代码代替截图?Stackoverflow阻止我添加图像。这就是为什么我只添加了图片的链接。我的意思是以文本格式包含源代码,而不是图片或整个图片的链接。完成了。我刚刚包括了源代码
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Support\Facades\Cookie;
class Authenticate extends Middleware
{
public function handle($request, Closure $next, ...$guards)
{
# Check if request is made using LIVEWIRE
if ( request()->hasHeader('x-livewire') ) {
/**
* get token from session
*
*
* But, this $token return NULL
* instead token value.
*/
$token = session()->get('x__livewire__token');
$request->headers->set('Accept', 'application/json');
$request->headers->set('Content-Type', 'application/json');
// # Send token to request header
$request->headers->set('Authorization', 'Bearer ' . $token);
}
# After that, authenticate livewire request
$this->authenticate($request, $guards);
return $next($request);
}
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if ( !$request->expectsJson() ) {
return route('user.login');
}
}
}
<?php
Route::group(['prefix' => 'v1'], function() {
Route::group(['middleware' => ['auth:api', 'jwt.verifyer', 'hostname.access.verifyer']], function() {
# Here is LIVEWIRE component
Route::get('/processing', HelloWorld::class)->name('transaction.checkout');
});
});