Laravel 9中UserAuthController出现Undefined method 'createToken'错误
解决Laravel 9 Passport中
createToken方法未定义的问题 以下是针对你遇到的Intelephense提示Undefined method 'createToken'的可行解决方案:
1. 清除Intelephense缓存
编辑器代码分析工具可能缓存了旧的模型定义,执行以下操作:
- 在VS Code中打开命令面板(Ctrl+Shift+P / Cmd+Shift+P)
- 输入
Intelephense: Clear Workspace Cache并执行 - 重启VS Code后重新检查代码
2. 确认Passport安装配置完整
确保完成Passport所有必备步骤:
- 运行Passport安装命令:
php artisan passport:install - 在
App\Providers\AuthServiceProvider.php中注册Passport路由:use Laravel\Passport\Passport; public function boot() { $this->registerPolicies(); Passport::routes(); } - 执行数据库迁移:
php artisan migrate
3. 添加明确类型提示
在控制器中对User实例添加类型声明,帮助Intelephense识别方法:
修改register方法:
/** @var \App\Models\User $user */ $user = User::create($data); $token = $user->createToken('API Token')->accessToken;
修改login方法:
/** @var \App\Models\User $user */ $user = auth()->user(); $token = $user->createToken('API Token')->accessToken;
4. 明确指定API Guard
登录时明确使用api guard,避免默认web guard的类型识别问题:
if (!auth('api')->attempt($data)) { return response(['error_message' => 'Incorrect Details. Please try again']); } /** @var \App\Models\User $user */ $user = auth('api')->user(); $token = $user->createToken('API Token')->accessToken;
5. 刷新自动加载文件
执行composer命令更新自动加载映射:
composer dump-autoload
内容的提问来源于stack exchange,提问作者lewis04
相关产品推荐
相关产品推荐

