我有以下控制器
namespace App\Http\Controllers;
use App\Models\Book;
use Illuminate\Http\Request;
class BookController extends Controller {
public function index() {
$user = auth()->user();
$books = $user->books;
return response()->json(['books' => $books]);
}
}
它的API路由器
Route::middleware('auth:sanctum')->group(function () {
Route::apiResource('books', BookController::class);
});
最后,在我的Books.vue中,我尝试使用router
获得json响应,如下所示
<script setup lang="ts">
import { Head, router, Link } from "@inertiajs/vue3";
router.get('/api/books', { headers: { 'Accept': 'application/json' } })
// router.get('/api/books')
// axios.get('/api/books')
</script>
在网络中,结果为
然后我被重定向到主页或登录页面,如果我没有登录
我读到的一个解决方案是从RedirectIfAuthenticated.php
中删除return redirect(RouteServiceProvider::HOME);
,但它只会使它重定向到登录,尽管已经登录
只有当我注解掉auth:sanctum
中间件并使控制器使用$trips = Trip::all();
时,它才会工作
1条答案
按热度按时间rsaldnfx1#
我通过在
app/Http/Kernel.php
中取消注解这个中间件解决了这个问题\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
根据https://laravel.com/docs/10.x/sanctum#sanctum-middleware