php - 如何在 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');
}
解决方案
guest
中间件正在应用于您的路由。用于php artisan route:list
查看它所说的附加到它的中间件。guest
中间件默认应用于所有动作RegisterController
,它是在控制器的构造函数中设置的。您将不得不调整:
$this->middleware('guest')->except('showTokenForm');
推荐阅读
- java - 如何根据 Spring MVC 控制器方法的请求 URI 为 @RequestBody 参数实例化特定子类型?
- node.js - 如何创建一个http反向代理并使用节点js转换流
- swiftui - iOS 13.4:使用 toggle() 时不再为 @Published Bool 调用 didSet()
- javascript - 我的 module.exports 返回为 [object Object]
- python - Openpyxl & Python - 将两列单元格中的数据组合成一列
- python - 如何使用 Django Environ 访问 Django 中的环境变量?
- javascript - 使用 Enzyme 将 redux 操作作为道具传递
- javascript - 使用捆绑器后无法加载资源错误
- javascript - 多级嵌套列表
- sql - 如何在 Rails 中正确编写 SQL 查询