Laravel 登录和注册:一段时间内自动登录
在Laravel框架中实现一段时间内的自动登录,可以使用Laravel提供的remember me
功能。这通常通过在登录时使用remember
方法实现。
以下是实现自动登录的步骤:
- 在登录表单中添加一个复选框,用户可以选择是否记住登录状态。
<input type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label for="remember">记住我</label>
- 在登录控制器中处理登录请求,并使用
attempt
方法尝试认证用户。如果用户选中了记住我复选框,则使用true
作为$remember
参数。
use Illuminate\Support\Facades\Auth;
// ...
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
$remember = $request->has('remember');
if (Auth::attempt($credentials, $remember)) {
// 认证成功
$request->session()->regenerate();
return redirect()->intended('dashboard');
}
// 认证失败
return back()->withErrors([
'email' => '提供的凭证不匹配我们的记录。',
]);
}
- 确保
config/session.php
中的lifetime
设置适合你想要用户保持登录状态的时间。
'lifetime' => 120, // 分钟数,120分钟内自动登录
- 确保
config/auth.php
中的guards
配置正确,并且providers
也配置得当。
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
// ...
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// ...
],
以上步骤应该能够在Laravel应用中实现用户选择记住登录的功能,并且在一定时间内自动登录用户。
评论已关闭