我正在使用带有vuejs和inertiajs的laravel项目。我想让用户登录,登录后我希望用户重定向到test.vue文件,我创建这个文件只是为了学习。我在提交注册表格后做了一个注册表格,我调用了一个函数登录,即我希望同一个用户登录,谁注册了。我设置的登录功能工作正常,但无法使用惯性渲染重定向到vue页面。
注册表格.vue
SubmitRegistration(){
this.$v.$touch();
if (this.$v.$invalid) return;
axios.post('submitRegistrationForm',this.form)
.catch(({ response }) => {
this.$toast.error(response.data.message, 'error', {timeout:3000});
}).then(({ data }) => {
this.setLogin();
});
},
setLogin(){
const data = {
email: this.form.email,
password: this.form.password
}
axios.post('loggedInUser',data)
.catch(({ response }) => {
this.$toast.error(response.data.message,'error', {timeout: 3000});
});
},
web.php
Auth::routes();
Route::post('loggedInUser',[FrontEndController::class,'authenticate'])->name('login.attempt');
FrontEndController.php
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
return Inertia::render('Layouts/Test');
}
}
测试.vue
<template>
<h1>
Hello
</h1>
</template>
尝试使用this.$inertia.post(url, data)
而不是axios调用访问loggedInUser
。也就是说,做:
setLogin() {
const data = {
email: this.form.email,
password: this.form.password
}
this.$inertia.post(url, data);
};
而不是:
setLogin() {
const data = {
email: this.form.email,
password: this.form.password
}
axios.post('loggedInUser',data)
.catch(({ response }) => {
this.$toast.error(response.data.message,'error', {timeout: 3000});
});
}