2016-05-02 5 views
0

У меня уже есть перенаправление, работающее для моего потока входа. Но я хотел бы перейти на страницу пользователя после регистрации.Переадресация Laravel 5.2, предназначенная после регистрации

Я уже изменил поведение, чтобы перенаправить на страницу регистрации, если пользователь не вошел в систему и пытается получить доступ к защищенному маршруту.

Однако после успешной регистрации он не перенаправляется на предполагаемый маршрут. После входа в систему он работает.

return redirect()->guest('/auth/register'); 

ответ

0

Вы можете сделать это, используя переменную $redirectPath. Просто добавьте ниже линии AuthController класса внутри Auth/AuthController.php

protected $redirectPath= '/yourURL';

пути редирект выше будет использоваться для успешной регистрации и успешной регистрации.

Если вы просто хочет перенаправить после регистрации и входа в систему, не то вам нужно будет настроить функцию postRegister():

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()));  
    //Set your redirect path below 
    return redirect('/plan'); 
} 
+0

спасибо - но проблема в том, что я хочу перейти на предназначенную страницу - например, кто-то пытается получить доступ/планы/5 или/планы/3 - он будет вынужден войти/зарегистрироваться. В обоих случаях я хочу направить их прямо на план. –

+0

@FrankProvost. А я вижу, поэтому, когда они попадают в URI '/ plans/{id}', вы хотите, чтобы они могли достичь страницы независимо от того, вошли ли они в систему или нет ? – James

+0

На самом деле нет :) рабочий процесс выглядит следующим образом: Незарегистрированные пользовательские вызовы/планы/{id} -> перенаправляются на страницу регистрации -> регистры -> перенаправляются на предполагаемые/планы/{id} Этот поток работает отлично с помощью логин, но не с регистрацией –

0

Вы можете установить предполагаемую страницу в качестве сессионного вар.

return redirect()->guest('/auth/register')->with('intendedUrl', $request->path()); 

Затем просто заберите его после регистрации.

$intendedUrl = $request->session()->get('intendedUrl'); 

Не забудьте очистить сеанс var.

0

В Laravel 5.5 вам необходимо удалить $redirectTo переменные и создать redirectTo функции вместо этого в контроллере регистра пользователя следующим образом:

public function redirectTo() 
{ 
    $intended = Session::get('url.intended'); 

    if (!empty($intended)) { 
     Session::forget('url.intended'); 
     return $intended; 
    } 

    return 'YOUR_NORMAL_URL'; 
} 

Убедитесь, что контроллер использует регистр RegistersUsers. Если вы проверяете RedirectsUsers черта, которая используется в RegistersUsers признака есть такая функция:

public function redirectPath() 
{ 
    if (method_exists($this, 'redirectTo')) { 
     return $this->redirectTo(); 
    } 

    return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home'; 
} 

который проверяет redirectTo функции первого.

Надеюсь, это будет полезно для кого-то.

Смежные вопросы