首页 > 解决方案 > 如何在 laravel 的注册中设置自定义重定向 url?

问题描述

RegistersUsers我将Trait 中的register 方法覆盖RegisterController为:

public function register(Request $request)
{
    $request->validate([
        'name' => 'required|string|max:255',
        'username' => 'required|string|max:255|unique:users',
        'password' => 'required|string|min:8|confirmed',
        'phone_number' => [
            'required',
            'min:11',
            'max:11',
            Rule::unique('users')
        ]
    ]);

    $user = User::create([
        'name' => $request['name'],
        'password' => Hash::make($request['password']),
        'username' => $request['username']
    ]);

    $this->guard()->login($user);

    $code = ActiveCode::generateCode($user);
    $request->session()->flash('phone', $request['phone_number']);
    $request->session()->flash('auth', ['user_id' => $user->id]);

    $user->notify(new ActiveCodeNotification($code, $request['phone_number']));

    return redirect(route('register.token'));

}

正如您在最后看到的那样,我返回了自定义路由,但在注册后,它将重定向到/home.

这是protected $redirectTo = '/';

为什么它不能重定向到route('register.token')

更新

这是register.token路线:

Route::get('/register/phone', 'Auth\RegisterController@showTokenForm')
->name('register.token');

这是showTokenForm方法:

public function showTokenForm(Request $request)
{
    $request->session()->reflash();

    return view('auth.register-token');
}

标签: phplaravellaravel-8

解决方案


guest中间件正在应用于您的路由。用于php artisan route:list查看它所说的附加到它的中间件。guest中间件默认应用于所有动作RegisterController,它是在控制器的构造函数中设置的。您将不得不调整:

$this->middleware('guest')->except('showTokenForm');

推荐阅读