我正在使用Laravel 5.
我想在注册成功后重定向用户。我在我的authcontroller中尝试了这些,但它不起作用。
protected $loginPath = '/plan';
protected $redirectTo = '/plan';
protected $redirectAfterRegister = 'plan/';
这些工作成功登录但注册后却没有。
我还尝试postRegister
呈现视图,但使用postRegister
方法会覆盖注册过程,我不想这样做。我只想将用户重定向到成功注册的页面。
答案 0 :(得分:5)
覆盖你提到的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
答案 1 :(得分:2)
只需将以下行添加到Auth / AuthController.php中的AuthController类
即可protected $redirectPath= '/plan';
上面的重定向路径将用于成功登录和成功注册。
答案 2 :(得分:1)
您还可以在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');
}
答案 3 :(得分:1)
这是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()
的位置。
答案 4 :(得分:0)
运行命令后
php artisan make:auth
laravel创建身份验证控制器和资源文件以更改注册用户的路由 只需转到路径下方
App\Http\Controllers\Auth\RegisterController
并更改protected $redirectTo
参数
并且您可以在LoginController
的下一个RegisterController
中使用这种方式
登录后进行重定向
答案 5 :(得分:0)
有两个选项可以指定在 app / Http / Controllers / Auth / RegisterController.php
对于简单的URL,您可以覆盖此属性。
protected $redirectTo = '/home';
如果您的逻辑不仅仅是一个静态URL,那么从Laravel 5.3开始,您可以在同一类RegisterController中添加名称为 redirectTo()的方法:
protected function redirectTo()
{
if (auth()->user()->role_id == 1) {
return '/admin';
}
return '/home';
}
即使该值存在,该方法的行为也会覆盖$ redirectTo属性值。