我有一个
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')
请求。这部分我不太明白。
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');
}
});