2016-04-03 3 views
2

У меня есть сценарий, в котором я помещаю определенную информацию в сеанс после успешного входа пользователя в систему. Я использую Laravel 5.2. Как и в Laravel 5.2, вы просто перенаправляете пользователя на /login и задаете переменную protected $redirectTo, а остальное заботится сам Laravel. Теперь я хочу, чтобы всякий раз, когда пользователь был успешно зарегистрирован, я хочу поместить некоторую информацию в сеанс. В настоящее время, что я делаю, когда пользователь перенаправляется на мой protected $redirectTo URL я помещал информацию в том, что, какДобавление информации в сеанс, когда пользователь вошел в систему Laravel 5.2

\Session::put('user.data', $someData); 

Он отлично работает в обычном сценарии. Но скажите, что пользователь вышел из системы и пытается получить доступ к некоторому защищенному URL, например example.com/showUsers, сохраненному в его браузере. Теперь Laravel проверит его URL, защищенный от входа, он перенаправит пользователя на страницу входа, пользователь будет успешно зарегистрирован и теперь в этом случае Laravel перенаправляет пользователя на предыдущий URL-адрес. Теперь информация, которую я хочу поставить в сеанс, не входит в сеанс, поэтому я получаю ошибку.

Я проверил Auth/AuthController, Authication.php in middleware, но не нашел ни одного места.

В настоящее время я ставлю его в /app/Http/Middleware/Authenticate.php до последнего утверждения return $next($request); как этот

if(empty(\Session::get('user.data'))) { 
     $someData = getSomeData(); 
     \Session::put('user.agency', $someData); 
} 
return $next($request); 

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

ответ

2

Насколько я понял, вы используете AuthController и AuthenticatesUsers, чтобы регистрировать пользователей, в которых используется значение по умолчанию для Laravel.

В атрибуте AuthenticatesUser в строке 114 вы увидите проверку определения метода, которая была написана для пользователей фреймворка для определения дополнительной работы, связанной с входом в систему.

/** 
* Send the response after the user was authenticated. 
* 
* @param \Illuminate\Http\Request $request 
* @param bool $throttles 
* @return \Illuminate\Http\Response 
*/ 
protected function handleUserWasAuthenticated(Request $request, $throttles) 
{ 
    if ($throttles) { 
     $this->clearLoginAttempts($request); 
    } 
    if (method_exists($this, 'authenticated')) { 
     return $this->authenticated($request, Auth::guard($this->getGuard())->user()); 
    } 
    return redirect()->intended($this->redirectPath()); 
} 

В классе AuthController,

создает метод, называемый проверкой подлинности и делать свою работу, должны быть более ожидаемое поведение.

/** 
* Return the authenticated response. 
* 
* @param $request 
* @param $user 
* @return \Illuminate\Contracts\Routing\ResponseFactory 
*/ 
protected function authenticated(Request $request, $user) 
{ 
    // Here. 
} 
+0

Благодарим вас за это. Это именно то, что я искал. Еще один вопрос: если мне нужно переопределить процесс регистрации Laravel, какие файлы я буду смотреть? –

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