laravel - 测试 Laravel Sanctum 会导致错误的方法调用
问题描述
我正在尝试测试经过身份验证的 API 路由,只有经过身份验证的用户才能发布到特定路由。
查看 Laravel Sanctum 文档,我可以使用下面的代码来创建和验证用户:
Sanctum::actingAs(
factory(User::class)->create(),
['*']
);
当我尝试复制它时,运行测试时出错
BadMethodCallException: Call to undefined method App\User::withAccessToken()
我的测试代码如下:
public function an_authenticated_user_can_add_a_client()
{
$user = Sanctum::actingAs(
factory(User::class)->create(),
['*']
);
dd($user);
// $this->post('/api/clients', $this->data());
}
api.php
Route::middleware('auth:sanctum')->group(function () {
//Clients
Route::get('/clients/{client}','ContactsController@show');
Route::post('/clients','ContactsController@store');
Route::patch('/clients/{client}','ContactsController@update');
Route::delete('/clients/{client}','ContactsController@destroy');
});
我的 User 类中没有 withAccessToken() 方法,也看不到该方法来自何处或在任何地方指定。任何帮助将不胜感激。
解决方案
用于 SPA 的 Laravel Sanctum 使用普通会话身份验证,因此默认的 actuatorAs 方法可以正常工作。Sanctum 中的 actuatorAs 方法旨在用于 api 令牌。希望能帮助到你。
推荐阅读
- ios - 如何创建抽象函数以减少代码重复
- datetime - 日期转换处理 YYYY-MM-DD HH:MM:SS.SSS
- linux - 如何让linux机器在固定的时间内关闭
- java - 如何修复 Mockito 抛出“嵌套异常是 java.lang.NullPointerException”?
- javascript - 我有一个使用 heroku 部署的反应网站。Heroku 在直接导航到子页面时显示反斜杠。我该如何解决?
- firefox - 如何修复 Firefox 扩展弹出窗口中显示的滚动条
- javascript - 使用危险的SetInnerHtml 有什么风险以及是什么阻止了某人通过浏览器删除净化?
- angular - “错误:在更新 Angular cli 时找不到模块'@angular-devkit/schematics/tasks'”
- charts - 当数字低于零时如何更改谷歌表格中的图表颜色
- java - 当池生命周期为 LIFE_CYCLE_FAILED 时,使用 UCP 管理器调用 closeConnections() 时 UCP 连接是否关闭?