vue.js 调用API会将我重定向到Home,状态代码为302

rdlzhqv9  于 2023-04-21  发布在  Vue.js
关注(0)|答案(1)|浏览(226)

我有以下控制器

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();时,它才会工作

rsaldnfx

rsaldnfx1#

我通过在app/Http/Kernel.php中取消注解这个中间件解决了这个问题
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
根据https://laravel.com/docs/10.x/sanctum#sanctum-middleware

相关问题