我正在使用Laravel 5。
我想在注册成功后重定向用户。我在我的authcontroller中尝试了这些,但它不起作用。
protected $loginPath = '/plan';
protected $redirectTo = '/plan';
protected $redirectAfterRegister = 'plan/';
这些工作成功登录,但注册后没有。
我也尝试过postRegister
渲染视图,但使用postRegister
方法会覆盖注册过程,我不想这样做。我只想将用户重定向到成功注册的页面。
覆盖你提到的postRegister函数应该可行,你可以在你的AuthController
中执行此操作:
public function postRegister(Request $request)
{
$validator = $this->registrar->validator($request->all());
if ($validator->fails())
{
$this->throwValidationException(
$request, $validator
);
}
$this->auth->login($this->registrar->create($request->all()));
// Now you can redirect!
return redirect('/plan');
}
或类似的东西。从你在AuthenticatesAndRegistersUsers
顶部使用的AuthController
复制它,在这里你会发现所有的功能
为此,你的AuthController
应该使用'AuthenticatesAndRegistersUsers'特性,默认情况下是这样。
有关重定向的更多信息,以防您想要重定向到命名路由:http://laravel.com/docs/5.0/responses#redirects
只需将以下行添加到Auth / AuthController.php中的AuthController类
protected $redirectPath= '/plan';
上面的重定向路径将用于成功登录和成功注册。
您还可以在RegisterUsers.php中修改register()的返回值:
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::guard($this->getGuard())->login($this->create($request->all()));
// Originally the parameter is $this->redirectPath()
return redirect()->to('/plans');
}
这是laravel 5.4解决方案
/**
* The user has been registered.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function registered(Request $request, $user)
{
//User register now here you can run any code you want
if (\Request::ajax()){
return response()->json([
'auth' => auth()->check(),
'intended' => $this->redirectPath(),
]);
exit();
}
return redirect($this->redirectPath());
}
请记住register()
处理申请的注册申请。用户创建时registered()
调用的地方。
运行命令后
php artisan make:auth
laravel创建auth控制器和资源文件,用于更改注册用户的路径,只需转到下面的路径即可
App\Http\Controllers\Auth\RegisterController
并更改protected $redirectTo
param,您可以在LoginController
的RegisterController
中以这种方式用户在登录后进行重定向