Используйте аутентификацию laravel jwt только для API, не затрагивая ИнтернетPhp

Кемеровские программисты php общаются здесь
Anonymous
Используйте аутентификацию laravel jwt только для API, не затрагивая Интернет

Сообщение Anonymous »

У меня проблема с аутентификацией в сети laravel, я использую только аутентификацию JWT только для API, я замечаю, что всякий раз, когда меняю защиту по умолчанию на веб-'guard' => 'web', и я попробуйте войти в систему с помощью почтальона, используя мой API, это не сработает, и появится эта ошибка ("message": "Метод Illuminate\Auth\SessionGuard::factory не существует."), но Интернет будет работать, если я изменю его на «guard» => «api», я не смогу войти в систему в Интернете, но вход в систему почтальона API будет работать.
Только Интернет будет работать

Код: Выделить всё

'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
Работать будет только API

Код: Выделить всё

'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
Маршрут

Код: Выделить всё

Route::group([
'prefix' => 'auth'
], function () {
Route::post('login', [AuthController::class, 'login']);
Route::post('logout', [AuthController::class, 'logout']);
Route::post('refresh', [AuthController::class, 'refresh']);
Route::post('me', [AuthController::class, 'me']);
});
Контроллер

Код: Выделить всё

class AuthController extends Controller
{

public function __construct()
{
$this->middleware('auth:api', ['except' => ['login']]);
}

public function login(Request $request)
{
$credentials = $request->only('email', 'password');

if ($token = $this->guard()->attempt($credentials)) {
return $this->respondWithToken($token);
}

return response()->json(['error' => 'Unauthorized'], 401);
}

public function me()
{
return response()->json($this->guard()->user());
}

public function logout()
{
$this->guard()->logout();

return response()->json(['message' => 'Successfully logged out']);
}

public function refresh()
{
return $this->respondWithToken($this->guard()->refresh());
}

protected function respondWithToken($token)
{
return response()->json([
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => $this->guard()->factory()->getTTL() * 60
]);
}

public function guard()
{
return Auth::guard();
}
}
Я просто хочу использовать аутентификацию JWT только для API, не затрагивая Интернет, спасибо

Подробнее здесь: https://stackoverflow.com/questions/716 ... ecting-web

Вернуться в «Php»