This seems like a pretty basic flow, and Laravel
has so many nice solutions for basic things, I feel like I'm missing something.
A user clicks a link that requires authentication. Laravel's auth filter kicks in and routes them to a login page. User logs in, then goes to the original page they were trying to get to before the 'auth' filter kicked in.
Is there a good way to know what page they were trying to get to originally? Since Laravel is the one intercepting the request, I didn't know if it keeps track somewhere for easy routing after the user logs in.
If not, I'd be curious to hear how some of you have implemented this manually.
Laravel 3
I tweaked your (Vinícius Fragoso Pinheiro) code slightly, and placed the following in filters.php
And then within the my AuthController.php:
Notice that the
'redirect'
session data is reflashed if there is a authentication issue. This keeps the redirect intact during any login mishaps, but should the user click away at any point, the next login process is not disrupted by the session data.You also need to reflash the data at the point of showing the login form in your
AuthController
, otherwise the chain is broken:Laravel 5.2
If you are using a another Middleware like Admin middleware you can set a session for url.intended by using this following:
Basically we need to set manually
\Session::put('url.intended', \URL::full());
for redirect.Example
On login attempt
Make sure on login attempt use
return \Redirect::intended('default_path');
Use
Redirect;
Then use this:
I have been using this for a while on my language selector code. As long as you only need to go back by just 1 page it works fine:
It ain't the most powerful solution out there but it is super-easy and can help solve a few puzzles. :)
Change your LoginControllers constructor to:
It will redirect you back to the page BEFORE the login page (2 pages back).
For Laravel 5.3 and above
Check Scott's answer below.
For Laravel 5 up to 5.2
Simply put,
On auth middleware:
On login action:
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 belowthis method: (I've tried updating his answer, but it seems he won't accept)On auth filter:
On login action:
For Laravel 3 (even older answer)
You could implement it like this:
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.