#Laravel 11 and facing a problem with Laravel Sanctum I am not using any JS framework or SPA

7 messages · Page 1 of 1 (latest)

sand zealot
#

I used api that works well I have tested using PostMan and got token from login api and tried to request at /user with authorization bearer token.

But It return token at my laravel web route it return token using ajax but when i go to / route that's is dashboard redirect to login due to auth:sanctum middleware

glossy wyvern
#

could you please show some sample code? your question isn't very clear

sand zealot
#

Sure just a moment

#

Below are my routes:

app\routes\web.php
<?php

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Artisan;

use App\Http\Controllers\AuthController;
use App\Http\Controllers\DashboardController;
use Illuminate\Http\Request;

Route::get('/clear', function () {
$routeclear = Artisan::call('route:clear');
echo "Route cleared<br>";

$cacheclear = Artisan::call('cache:clear');
echo "Cache cleared<br>";

$eventclear = Artisan::call('event:clear');
echo "Event cleared<br>";

$configclear = Artisan::call('config:clear');
echo "Config cleared<br>";

$viewclear = Artisan::call('view:clear');
echo "View cleared<br>";

$clearcompiled = Artisan::call('clear-compiled');
echo "Compiled cleared<br>";

$configcache = Artisan::call('config:cache');
echo "Config cached<br>";

$routecache = Artisan::call('route:cache');
echo "Route cached<br>";

$viewcache = Artisan::call('view:cache');
echo "View cached<br>";

$optimize = Artisan::call('optimize');
echo "Optimized<br>";

});

Route::get('/login', [AuthController::class, 'login'])->name('login');
Route::get('/', [DashboardController::class, 'dashboard']);

Route::get('/user', function (Request $request) {
return [
'status' => true,
'user' => $request->user()
];
});

Route::middleware('auth:sanctum')->group(function () {
Route::get('/', [DashboardController::class, 'dashboard']);
});

app\routes\api.php
<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

use App\Http\Controllers\API\AuthController;

Route::post('/login', [AuthController::class, 'login']);

Route::middleware('auth:sanctum')->group(function () {
Route::get('/user', function (Request $request) {
return $request->user();
});
Route::post('/logout', [AuthController::class, 'logout']);
});

#

Controllers:

app\app\Http\Controllers\API\AuthController.php
<?php

namespace App\Http\Controllers\API;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;

class AuthController extends Controller
{
public function login(Request $request)
{
$validateUser = Validator::make(
$request->all(),
[
'email' => 'required|email',
'password' => 'required'
]
);

    if ($validateUser->fails()) {
        return response()->json([
            'status' => false,
            'fail_type' => 1,
            'message' => 'validation error',
            'errors' => $validateUser->errors()
        ], 200);
    }

    $user = User::where('email', $request->email)->first();

    if ($user && Hash::check($request->password, $user->password)) {
        $token = $user->createToken("API TOKEN")->plainTextToken;

        return response()->json([
            'status' => true,
            'message' => 'Login successful',
            'token' => $token,
        ]);
    }

    return response()->json([
        'status' => false,
        'message' => 'Invalid credentials',
    ], 401);
}

public function user(Request $request)
{
    return response()->json([
        'status' => true,
        'user' => $request->user()
    ]);
}

public function logout(Request $request)
{
    $request->user()->tokens->each(function ($token) {
        $token->delete();
    });

    return response()->json([
        'status' => true,
        'message' => 'Logged out successfully',
    ]);
}

}

#

app\app\Http\Controllers\AuthController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class AuthController extends Controller
{
public function login(Request $request)
{
$data = [];

    return view('pages.login', $data);
}

}

app\app\Http\Controllers\DashboardController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class DashboardController extends Controller
{
public function dashboard(Request $request)
{
$data = [];

    return view('pages.dashboard', $data);
}

}