- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 jwtToken 测试我的应用程序的登录和注销。我迷失了 Laravel Contract 和 Trait。我阅读了很多问题/答案,但解决方案无法对我的代码起作用。我知道契约(Contract)不像 trait 那样工作,但它似乎有很大的联系。三天以来,我一直在寻找出路,但没有成功。
自从我将 ActingAs 放入测试后,我就遇到了这个错误。
你能帮帮我吗?
我的用户模型:
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Auth\UserInterface;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\Role;
use App\Models\UserAddress;
class User extends Authenticatable implements
JWTSubject,
AuthenticatableContract
{
use Notifiable;
use SoftDeletes;
use Authenticatable;
我也尝试不使用 implements AuthenticatableContract
我也试过没有第一次使用,没有第二次使用。
我的测试用例:
namespace Tests;
use App\Models\Role;
use App\Models\User;
use Illuminate\Support\Facades\DB;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
/**
* @var User
*/
protected $user;
public static $admin;
public static $faker;
public function setUp(): void
{
parent::setUp();
self::$faker = \Faker\Factory::create('fr_FR');
self::$admin = \App\Models\User::with('role')
->select('*')
->join('roles', 'roles.id_role', '=', 'users.id_role')
->where('slug', 'admin')
->first()->user;
我的账户测试:
namespace Tests\Feature;
use Carbon\Carbon;
use Tests\TestCase;
use App\Models\Role;
use App\Models\User;
use Tymon\JWTAuth\JWTAuth;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Contracts\Auth\Authenticatable;
[...]
public function testLogout() {
// $user = User::inRandomOrder()->firstOrFail();
// \Log::debug('user->first_name : ' . $user->first_name);
$this->actingAs(self::$admin)
->json('POST', 'api/auth/logout')
->assertStatus(200);
}```
最佳答案
这是不正确的:
class User extends Authenticatable implements
JWTSubject,
AuthenticatableContract
{
use Notifiable;
use SoftDeletes;
use Authenticatable;
}
您不能扩展 Authenticatable
和使用 Authenticatable
。
Authenticatable
不是特征(如错误所述)。它是一个抽象类,只能被扩展。
您可以在这里阅读更多关于特征和抽象类之间的区别:Difference between Trait and an Abstract Class in PHP
删除 use
语句应该可以解决您的问题。
关于php - 不能使用 Illuminate\Contracts\Auth\Authenticatable - 这不是一个特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61234150/
我尝试使用 jwtToken 测试我的应用程序的登录和注销。我迷失了 Laravel Contract 和 Trait。我阅读了很多问题/答案,但解决方案无法对我的代码起作用。我知道契约(Contra
出于某种原因,在我的页面上使用 Devise 进行身份验证似乎不起作用,导致出现 Unauthorized 401 错误。完成 net/ldap 中的步骤似乎绑定(bind)得很好。我不确定问题出在哪
我是 laravel 的初学者。我正在使用 guard 进行多重授权。我在我的管理员登录中遇到了这个问题:类型错误Illuminate\Auth\SessionGuard::login():参数 #1
我是一名优秀的程序员,十分优秀!