我有兩種 api 身份驗證方式,如果我的第一種方式失敗,我想要檢查 santcum laravel auth。我做 midlleware 課程,但我不知道如何檢查 santcum
<?php
namespace App\Http\Middleware;
class UserApiAuthenticated
{
/**
* User authenticator container
* @var UserAuthenticatorServiceInterface
*/
protected UserAuthenticatorServiceInterface $user_authenticator_service;
public function __construct(UserAuthenticatorServiceInterface$user_authenticator_service)
{
$this->user_authenticator_service = $user_authenticator_service;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request):
(\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if ($this->user_authenticator_service->isUserAuthenticated($request)) {
return $next($request);
} elseif () {
}
uj5u.com熱心網友回復:
我會做這樣的事情:
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @param string|null ...$guards
*
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard)
{
if (Auth::guard($guard)->check())
{
return $next($request);
}
}
abort(403, 'Unauthenticated')
}
它一一檢查所有守衛,當您使用中間件時,您設定了守衛:
->middleware('mymiddleware:web,sanctum')
或使用路由組:
Route::group(['middleware' => ['mymiddleware:web,sanctum',
如果您有共同的路由,您可以同時使用兩個防護,對于特定于一種身份驗證方法的路由,您可以設定您需要的正確防護
但最后我會檢查來自 laravel 的 auth 中間件,我確定它可以滿足您的需要(Illuminate\Auth\Middleware\Authenticate)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/465753.html
上一篇:將值推送到陣列陣列中的陣列
