用laravel fortify和inertiajs确认两个因素时的路线问题

问题描述 投票:0回答:1

我有一个

TwoFactorConfirm
页面,在设置 2fa 设备后需要输入 OTP 代码,并向
POST
提供的
route('two-factor.confirm')
发出
Fortify
请求,如下所示:

const { data, setData, post, processing, errors, reset } = useForm({
    code: '',
});

const submit = (e) => {
    router.visit(route('two-factor.confirm'), {
        method: 'post',
        data: data,
        onSuccess: (page) => {
            router.visit(route('somewhere'))
        }
    });
}

确认完成后,我想将用户重定向到另一个页面,但这里有一个问题:

router.visit(route('somewhere'))
永远不会运行,因为在处理请求后(数据库更改了,所以这一步没问题),我得到了向
GET
而不是
/thispage?code=xxxxxx
发出
route('somewhere')
请求。这部分我不太明白。

laravel inertiajs two-factor-authentication laravel-fortify
1个回答
0
投票

Inertia 路由器遵循从路由返回的重定向

two-factor.confirm

您可以修改这些重定向,请参阅此处的文档:https://laravel.com/docs/10.x/fortify#customizing-authentication-redirects

$this->app->instance(TwoFactorLoginResponse::class, new class implements Responsable {
    public function toResponse($request)
    {
        return redirect('/somewhere');
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.