【问题标题】:Call to undefined method Auth::user()->can() in laravel 8 error在 laravel 8 错误中调用未定义的方法 Auth::user()->can()
【发布时间】:2022-11-03 18:57:48
【问题描述】:

我在使用 Auth::user()->can() 确定权限时遇到问题。 例如 Auth::user()->can('trunk.index) 总是返回错误;

但我有一个问题。 如果我转储 $user->getPermissionsViaRoles(); ,我会得到一个很大的结果。

我正在使用不同的表 user_view 表。 根据它,我在 Auth.php 文件中进行了更改。并且登录工作正常。

'providers' => [
        'users' => [
            'driver' => 'self-eloquent',
            'model' => App\Models\UserView::class,
        ]
    ], 

但是当我尝试通过 Auth::user()->can('trunk.index) 检查权限时,它会在错误下方给出错误。

Call to undefined method App\\Models\\UserView::can()

下面是我的 UserView 模型代码。

<?php

namespace App\Models;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Traits\HasRoles;
use Laravel\Lumen\Auth\Authorizable;
use Laravel\Sanctum\HasApiTokens; 

class UserView extends Model implements AuthenticatableContract
{
    use Authenticatable;
    use HasFactory;
    use HasRoles;
    use HasApiTokens;
    protected $table = 'user_view';
    protected $primaryKey = "user_id";

    protected $fillable = [
        'username', 'password',
    ];

    protected $guarded = [];

    public function getAuthPassword()
    {
        return ['password' => $this->attributes['user_password']];
    }

    // public function can($abilities, $arguments = []) {
        
    // }

}

如果我遗漏了什么,请帮助我。谢谢你。

【问题讨论】:

    标签: laravel spatie-ssh


    【解决方案1】:

    您正在使用自定义 User 模型,该模型未实现 IlluminateContractsAuthAccessAuthorizable 接口和 IlluminateContractsAuthAccessGateAuthorizable 特征。您确实有此接口的导入,但它没有在任何地方使用。

    还要注意现有的导入LaravelLumenAuthAuthorizable。我不熟悉 Lumen,但这可能是不同的实现/错误的导入。

    【讨论】:

    • 此外,不再推荐使用 Lumen :)
    猜你喜欢
    • 1970-01-01
    • 2020-01-24
    • 2019-03-29
    • 2020-01-14
    • 1970-01-01
    • 2020-01-18
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多