Laravel 8 Breeze 登录时检查用户是否激活

聖光之護
发布: 2025-09-28 19:43:01
原创
356人浏览过

laravel 8 breeze 登录时检查用户是否激活

本文旨在指导开发者在使用 Laravel 8 和 Breeze 搭建的系统中,如何在用户登录时检查其 active 字段(布尔类型)的值,仅允许 active 值为 1 的用户登录。我们将修改 LoginRequest.php 文件中的 authenticate() 方法,加入对用户激活状态的验证,确保只有激活的用户才能成功登录系统。

在使用 Laravel Breeze 搭建的系统中,默认的登录逻辑位于 app/Http/Requests/Auth/LoginRequest.php 文件中。我们需要修改该文件中的 authenticate() 方法,添加对用户 active 字段的验证。

以下是修改后的 authenticate() 方法代码:

/**
 * Attempt to authenticate the request's credentials.
 *
 * @return void
 *
 * @throws \Illuminate\Validation\ValidationException
 */
public function authenticate()
{
    $this->ensureIsNotRateLimited();

    if (! Auth::attempt(array_merge( $this->only('email', 'password'), ['active' => 1 ]), $this->filled('remember'))) {
        RateLimiter::hit($this->throttleKey());

        throw ValidationException::withMessages([
            'email' => __('auth.failed'),
        ]);
    }

    RateLimiter::clear($this->throttleKey());
}
登录后复制

代码解释:

Block Survey
Block Survey

BlockSurvey是一个保护隐私和数据安全调查工具,可以让你使用AI来创建调查表单。

Block Survey 71
查看详情 Block Survey
  1. $this->ensureIsNotRateLimited();: 确保用户没有超出速率限制。
  2. Auth::attempt(array_merge( $this->only('email', 'password'), ['active' => 1 ]), $this->filled('remember')): 这是验证用户身份的关键部分。Auth::attempt() 方法尝试使用提供的凭据(email 和 password)进行身份验证。我们使用 array_merge() 函数将额外的条件 ['active' => 1] 合并到凭据数组中。这意味着只有当用户的 email 和 password 匹配,并且 active 字段的值为 1 时,身份验证才会成功。$this->filled('remember') 用于处理 "记住我" 功能。
  3. RateLimiter::hit($this->throttleKey());: 如果身份验证失败,则增加速率限制器的计数器。
  4. throw ValidationException::withMessages(['email' => __('auth.failed'),]);: 如果身份验证失败,则抛出一个验证异常,并显示 "auth.failed" 错误消息。
  5. RateLimiter::clear($this->throttleKey());: 如果身份验证成功,则清除速率限制器的计数器。

注意事项:

  • 确保你的 users 表中存在一个名为 active 的布尔类型的字段。
  • 如果你的 active 字段的名称不同,请相应地修改代码。例如,如果你的字段名为 is_active,则将 ['active' => 1] 更改为 ['is_active' => 1]。
  • 在生产环境中,建议使用更友好的错误消息,而不是简单的 "auth.failed"。你可以自定义错误消息,例如 "您的帐户尚未激活,请联系管理员。"

总结:

通过修改 LoginRequest.php 文件中的 authenticate() 方法,我们可以轻松地在 Laravel 8 Breeze 系统中实现登录时检查用户激活状态的功能。这可以有效地防止未激活的用户访问系统,提高系统的安全性。请记住根据您的具体需求调整代码,并始终在生产环境中提供清晰的错误消息。

以上就是Laravel 8 Breeze 登录时检查用户是否激活的详细内容,更多请关注php中文网其它相关文章!

Windows激活工具
Windows激活工具

Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号