라 라벨 5.3 이상
아래에서 Scott의 답변을 확인하십시오 .
Laravel 5 최대 5.2
간단히 말해서,
인증 미들웨어 :
// redirect the user to "/login"
// and stores the url being accessed on session
if (Auth::guest()) {
return redirect()->guest('login');
}
return $next($request);
로그인시 :
// redirect the user back to the intended page
// or defaultpage if there isn't one
if (Auth::attempt(['email' => $email, 'password' => $password])) {
return redirect()->intended('defaultpage');
}
라 라벨 4 (구 답변)
이 답변 당시 프레임 워크 자체의 공식적인 지원은 없었습니다. 요즘 사용할 수 있습니다아래 bgdrl에 의해 지적 된 방법이 방법 : (나는 그의 답변을 업데이트하려고했지만 그가 받아들이지 않을 것 같습니다)
인증 필터에서 :
// redirect the user to "/login"
// and stores the url being accessed on session
Route::filter('auth', function() {
if (Auth::guest()) {
return Redirect::guest('login');
}
});
로그인시 :
// redirect the user back to the intended page
// or defaultpage if there isn't one
if (Auth::attempt(['email' => $email, 'password' => $password])) {
return Redirect::intended('defaultpage');
}
라 라벨 3 (더 오래된 답변)
다음과 같이 구현할 수 있습니다.
Route::filter('auth', function() {
// If there's no user authenticated session
if (Auth::guest()) {
// Stores current url on session and redirect to login page
Session::put('redirect', URL::full());
return Redirect::to('/login');
}
if ($redirect = Session::get('redirect')) {
Session::forget('redirect');
return Redirect::to($redirect);
}
});
// on controller
public function get_login()
{
$this->layout->nest('content', 'auth.login');
}
public function post_login()
{
$credentials = [
'username' => Input::get('email'),
'password' => Input::get('password')
];
if (Auth::attempt($credentials)) {
return Redirect::to('logged_in_homepage_here');
}
return Redirect::to('login')->with_input();
}
세션에 리디렉션을 저장하면 사용자가 자격 증명을 입력하지 않았거나 계정이 없어서 가입해야하더라도이를 유지하는 이점이 있습니다.
이것은 또한 Auth 외에 세션에서 리다이렉션을 설정할 수있게하며 마술처럼 작동합니다.