Laravel redirect back to original destination after login
For Laravel 5.3 and above
Check Scott's answer below.
For Laravel 5 up to 5.2
Simply put,
On auth middleware:
// redirect the user to "/login"
// and stores the url being accessed on session
if (Auth::guest()) {
return redirect()->guest('login');
}
return $next($request);
On login action:
// 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');
}
For Laravel 4 (old answer)
At the time of this answer there was no official support from the framework itself. Nowadays you can use the method pointed out by bgdrl below this method: (I've tried updating his answer, but it seems he won't accept)
On auth filter:
// redirect the user to "/login"
// and stores the url being accessed on session
Route::filter('auth', function() {
if (Auth::guest()) {
return Redirect::guest('login');
}
});
On login action:
// 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');
}
For Laravel 3 (even older answer)
You could implement it like this:
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();
}
Storing the redirection on Session has the benefit of persisting it even if the user miss typed his credentials or he doesn't have an account and has to signup.
This also allows for anything else besides Auth to set a redirect on session and it will work magically.
Laravel redirect to previous page after login
After you login, capture the HTTP_REFERER header.
Request::server('HTTP_REFERER').
Then redirect to it.
return redirect()->to($referer);
Related Topics
How to Define an Empty Object in PHP
PHP Prepend Leading Zero Before Single Digit Number, On-The-Fly
Prevent Nginx 504 Gateway Timeout Using PHP Set_Time_Limit()
How to Explode and Trim Whitespace
Get Woocommerce Product Categories from Wordpress
How to Determine the Memory Footprint (Size) of a Variable
Laravel 4: How to "Order By" Using Eloquent Orm
How to Remove Part of a String in PHP
Ip Address Storing in MySQL Database Using PHP
Insert Current Date in Datetime Format MySQL
Enabling Postgresql Support in PHP on MAC Os X
Why Do I Have to Run "Composer Dump-Autoload" Command to Make Migrations Work in Laravel
Access Post Values in Symfony2 Request Object
What Is an .Inc and Why Use It
Phpexcel Auto Size Column Width