在Laravel中注册后重定向

时间:2015-06-28 17:19:03

标签: php laravel registration

我正在使用Laravel 5.

我想在注册成功后重定向用户。我在我的authcontroller中尝试了这些,但它不起作用。

protected $loginPath = '/plan';
protected $redirectTo = '/plan';
protected $redirectAfterRegister = 'plan/';

这些工作成功登录但注册后却没有。

我还尝试postRegister呈现视图,但使用postRegister方法会覆盖注册过程,我不想这样做。我只想将用户重定向到成功注册的页面。

6 个答案:

答案 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属性值。