Laravel 6调用Auth::guard('admin')->attempt()提示未定义方法怎么解决
解决步骤
1. 修正Admin模型继承关系
App\Admin模型必须继承Laravel认证基类Illuminate\Foundation\Auth\User(别名Authenticatable),不可直接继承普通Model,否则会导致认证方法逻辑异常,同时编辑器无法识别对应方法:
namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; class Admin extends Authenticatable { // 常规配置 protected $fillable = ['name', 'email', 'password']; protected $hidden = ['password', 'remember_token']; }
2. 修复现有代码语法错误
你贴出的AdminController.php中存在两处语法问题,先修正避免影响代码解析:
cheackAdminLogin方法末尾多了多余的注释闭合符*/,直接删除即可config/auth.php里的providers数组末尾缺少闭合的],补全后保存
3. 解决编辑器静态识别报红
如果代码实际运行正常,仅编辑器提示attempt未定义,属于IDE静态分析未匹配到Laravel动态返回的Guard类型,按以下步骤处理:
- 安装Laravel IDE辅助工具:
composer require --dev barryvdh/laravel-ide-helper - 生成IDE识别所需的辅助文件:
php artisan ide-helper:generate php artisan ide-helper:meta - 重启编辑器即可消除提示。如果使用PHPStorm建议额外安装Laravel Idea插件,VSCode建议安装Laravel Extra Intellisense插件优化识别效果。
4. 运行异常的额外处理
如果实际调用attempt方法时报错,先清空缓存重载配置:
php artisan config:clear php artisan cache:clear
你配置的admin guard使用session驱动,attempt是SessionGuard原生自带的方法,配置和代码修正后一定可以正常调用。
内容的提问来源于stack exchange,提问作者Eng Rasool
相关产品推荐
相关产品推荐

