📖 Scenario: You are building a simple login system for a website using Laravel. You want to add a "Remember Me" feature so users can stay logged in even after closing their browser.
🎯 Goal: Create a Laravel login form with a remember checkbox. Implement the backend logic to authenticate users and remember their login using Laravel's built-in authentication features.
📋 What You'll Learn
Create a login form with email, password, and a remember me checkbox
Add a controller method to handle login requests
Use Laravel's Auth::attempt method with the remember option
Redirect users to a dashboard page after successful login
💡 Why This Matters
🌍 Real World
Remember me functionality is common in websites to improve user experience by keeping users logged in across sessions.
💼 Career
Understanding authentication and session management is essential for backend web developers working with Laravel or similar frameworks.
Progress0 / 4 steps
1
Create the login form
Create a Blade view file called login.blade.php with a form containing inputs for email, password, and a checkbox named remember. The form should use the POST method and submit to /login.
Laravel
Hint
Use @csrf for security. Add inputs for email, password, and a checkbox named remember.
2
Add the login route and controller method
In routes/web.php, add a POST route for /login that uses LoginController@login. Then, create a LoginController with a login method that accepts the request.
Laravel
Hint
Add a POST route for /login in routes/web.php. Create LoginController with a login method that accepts Request $request.
3
Implement login logic with remember me
In the login method of LoginController, use Auth::attempt with the email, password from the request, and the remember checkbox value. If authentication succeeds, redirect to /dashboard. Otherwise, redirect back with errors.
Laravel
Hint
Use $request->only('email', 'password') to get credentials. Use $request->has('remember') for the checkbox. Pass both to Auth::attempt. Redirect accordingly.
4
Add the dashboard route and view
Add a GET route for /dashboard in routes/web.php that returns a simple view called dashboard. Create a Blade view file dashboard.blade.php with a heading Welcome to your dashboard.
Laravel
Hint
Add a GET route for /dashboard that returns the dashboard view. Create dashboard.blade.php with a heading inside the body tag.
Practice
(1/5)
1. What does the "Remember me" functionality do in Laravel authentication?
easy
A. Keeps users logged in across browser sessions
B. Logs users out immediately after closing the browser
C. Deletes user data after logout
D. Prevents users from logging in multiple times
Solution
Step 1: Understand the purpose of "Remember me"
It is designed to keep users logged in even after they close and reopen their browser.
Step 2: Compare options with this purpose
Only Keeps users logged in across browser sessions matches this behavior; others describe opposite or unrelated actions.
Final Answer:
Keeps users logged in across browser sessions -> Option A
Quick Check:
Remember me = Keeps login [OK]
Hint: Remember me means staying logged in after browser closes [OK]
Common Mistakes:
Thinking it logs users out immediately
Confusing it with session expiration
Assuming it deletes user data
2. Which is the correct way to enable "Remember me" when using Auth::attempt in Laravel?
easy
A. Auth::attempt(['email' => $email, 'password' => $password]);
B. Auth::attempt(['email' => $email, 'password' => $password], true);
C. Auth::attempt(['email' => $email, 'password' => $password], false);
D. Auth::attempt(['email' => $email, 'password' => $password], 0);
Solution
Step 1: Check Auth::attempt signature
The second parameter is a boolean to enable "Remember me"; true enables it.
Step 2: Identify correct syntax
Auth::attempt(['email' => $email, 'password' => $password], true); uses true correctly. Omitting the second parameter defaults to false and disables it. Using false explicitly disables it. Using 0 is falsy and disables it.
Final Answer:
Auth::attempt(['email' => $email, 'password' => $password], true); -> Option B
Quick Check:
Second param true enables remember me [OK]
Hint: Use true as second param in Auth::attempt for remember me [OK]
Common Mistakes:
Omitting the second parameter
Passing false instead of true
Using numeric 0 instead of true
3. Given this Laravel code snippet, what will be the output if the user checks "Remember me" and credentials are correct?
if (Auth::attempt(['email' => $email, 'password' => $password], true)) {
echo 'Logged in with remember me';
} else {
echo 'Login failed';
}
medium
A. Logged in with remember me
B. Login failed
C. Syntax error
D. User logged in but not remembered
Solution
Step 1: Analyze Auth::attempt with remember true
When credentials are correct and remember is true, Auth::attempt returns true and sets a long-lasting cookie.
Step 2: Check output based on condition
Since Auth::attempt returns true, the first echo runs, printing 'Logged in with remember me'.
Final Answer:
Logged in with remember me -> Option A
Quick Check:
Correct credentials + remember true = logged in message [OK]
Hint: Correct credentials + true = logged in with remember me [OK]
Common Mistakes:
Assuming remember me disables login
Confusing output with login failure
Thinking it causes syntax error
4. Identify the error in this Laravel login code that tries to enable "Remember me":
B. The email key should be 'user_email' instead of 'email'
C. Auth::attempt does not accept a second parameter
D. The second parameter should be boolean true, not string 'true'
Solution
Step 1: Check second parameter type in Auth::attempt
The second parameter must be boolean true or false, not a string.
Step 2: Verify other parts
Email key 'email' is correct; Auth::attempt accepts second param; redirect()->intended is valid.
Final Answer:
The second parameter should be boolean true, not string 'true' -> Option D
Quick Check:
Second param must be boolean, not string [OK]
Hint: Use true boolean, not 'true' string for remember me [OK]
Common Mistakes:
Passing 'true' as string instead of boolean
Changing email key incorrectly
Thinking redirect()->intended is wrong
5. You want to implement "Remember me" in a Laravel app but also ensure security by limiting the cookie duration. Which approach correctly combines remember me with a custom cookie lifetime?
hard
A. Use Auth::login with remember true and override the cookie expiration in the AuthServiceProvider
B. Use Auth::attempt with remember true and manually set cookie expiration in middleware
C. Use Auth::attempt with remember true and set 'remember' in config/session.php
D. Use Auth::attempt without remember and set session lifetime to a long time
Solution
Step 1: Understand Laravel remember me and cookie lifetime
Laravel uses the 'remember' config setting in config/session.php to control the remember me cookie lifetime.
Step 2: Identify correct way to combine remember me and cookie duration
Using Auth::attempt with remember true plus setting 'remember' in config/session.php is the standard way.
Step 3: Evaluate other options
Manual cookie setting or overriding in AuthServiceProvider is complex and not recommended; omitting remember disables feature.
Final Answer:
Use Auth::attempt with remember true and set 'remember' in config/session.php -> Option C
Quick Check:
Remember me + config cookie time = secure persistent login [OK]
Hint: Set 'remember' in config/session.php with Auth::attempt true [OK]
Common Mistakes:
Trying to manually set cookie expiration in code
Not using remember parameter in Auth::attempt
Confusing session lifetime with remember cookie lifetime
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.