Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

tallaljamshed's avatar

sanctum API authentication redirects to login page

Hi, Im trying to access an API from postman that has a middleware

middleware('auth:sanctum')

well it means that I need to send a bearer token in API request header. And it works when I do send the token. But the problem is if I don't send token it should give me a json output as "unauthorized access". Instead it returns the whole login page html back to postman. any help?

0 likes
10 replies
MostafaGamal's avatar
Level 10

@tallaljamshed add the "Accept" header to Ajax request and set the value to "application/json" and it will work.

18 likes
Pablo-Camara's avatar

@MostafaGamal or you can also override the shouldReturnJson function in your app exception Handler.php and make it return true:

/**
 * Determine if the exception handler response should be JSON.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Throwable  $e
 * @return bool
 */
protected function shouldReturnJson($request, Throwable $e)
{
    return true;
}
1 like
DanishAli097's avatar

@Pablo-Camara In which place i should add this code in Handler.php?

<?php

namespace App\Exceptions;

use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;

class Handler extends ExceptionHandler
{
    /**
     * A list of exception types with their corresponding custom log levels.
     *
     * @var array<class-string<\Throwable>, \Psr\Log\LogLevel::*>
     */
    protected $levels = [
        //
    ];

    /**
     * A list of the exception types that are not reported.
     *
     * @var array<int, class-string<\Throwable>>
     */
    protected $dontReport = [
        //
    ];

    /**
     * A list of the inputs that are never flashed to the session on validation exceptions.
     *
     * @var array<int, string>
     */
    protected $dontFlash = [
        'current_password',
        'password',
        'password_confirmation',
    ];

    /**
     * Register the exception handling callbacks for the application.
     *
     * @return void
     */
    public function register()
    {
        $this->reportable(function (Throwable $e) {
            //
        });
    }
}

catchbobbie's avatar

@MostafaGamal Thanks. This worked for me as well. But I want to understand, why does this works? What does this changes ?

Puzzle's avatar

Hello ! my axios do it automatically despite this laravel api redirect it to home page. Somewone to help please.

Puzzle's avatar

@Snapey Please excuse me, I completely forgot that I had asked the question. I solved the problem by commenting out the line return redirect (RouteServiceProvider :: HOME); in App\Http\Middleware\RedirectIfAuthenticated

2 likes

Please or to participate in this conversation.