Laravel 9+Jetstream注册后如何自动完成用户授权登录?
解决Laravel 9 + Jetstream + Inertia + Vue3注册后自动登录问题
修改Jetstream的CreateNewUser Action即可实现注册后自动认证,步骤如下:
- 打开项目中的
app/Actions/Fortify/CreateNewUser.php文件 - 在文件顶部导入Auth门面:
use Illuminate\Support\Facades\Auth;
- 在
create方法中,完成用户创建后添加登录逻辑:
public function create(array $input) { Validator::make($input, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => $this->passwordRules(), ])->validate(); $user = User::create([ 'name' => $input['name'], 'email' => $input['email'], 'password' => Hash::make($input['password']), ]); // 添加这行代码,注册后立即登录用户 Auth::login($user); // 如果启用了Jetstream Teams功能,保留原有的团队创建逻辑(如果有) if (Jetstream::hasTeamFeatures()) { $this->createTeam($user); } return $user; }
注意事项:
- 如果项目启用了邮箱验证功能,默认Jetstream会阻止未验证邮箱的用户登录。若要强制登录,需修改
config/fortify.php中的features,移除Features::emailVerification(),或者在登录后手动标记邮箱为已验证(不推荐,违反验证流程)。 - 确保Inertia前端表单提交逻辑正常,注册成功后Jetstream会自动重定向到配置的默认路由(通常是
dashboard),登录状态会同步到前端。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

