Php Laravel 5.6策略在远程服务器上无法正常工作

Php Laravel 5.6策略在远程服务器上无法正常工作,php,laravel,laravel-5,laravel-authorization,Php,Laravel,Laravel 5,Laravel Authorization,我创建了一个名为LetterPolicy的策略,这是代码 这是authserviceprovider 在下面的代码中,我检查用户 class LetterController extends Controller { protected $user; public function __construct() { $this->middleware(function ($request, $next){ $this->user = Auth::user();

我创建了一个名为
LetterPolicy
的策略,这是代码

这是
authserviceprovider

在下面的代码中,我检查用户

class LetterController extends Controller
{
protected $user;
public function __construct()
{
    $this->middleware(function ($request, $next){
       $this->user = Auth::user();
        return $next($request);
    });

}
public function edit(Letter $letter)
{
    if($this->user->can('update', $letter)){           
       //edit
    }
    else
        abort('403', 'Access Denied');
}
代码在本地主机上运行良好,但在远程服务器上,它报告了
拒绝访问
错误。我在服务器上部署站点后创建了此策略,因此我使用代码创建了一个路由
/clear cache

    Route::get('/clear-cache', function() {
        $exitCode = \Illuminate\Support\Facades\Artisan::call('cache:clear');
    });

在创建策略后清除缓存。但它仍然报告
403
错误。问题出在哪里?

我尝试了
dd($this->user->id==$letter->user|id|this->user->role|id==1),然后返回
false
。我尝试了
dd($this->user->id=$letter->user|id |$this->user->role_id==1)并且它是
真的
。现在它工作了,但我不知道为什么

我尝试了
dd($this->user->id==$letter->user|id|this->user->role|id==1),然后返回
false
。我尝试了
dd($this->user->id=$letter->user|id |$this->user->role_id==1)并且它是
真的
。现在它工作了,但我不知道为什么

Fjarlaegur的回答是关键。我也遇到了同样的问题:在localhost中没有问题,但在生产服务器中,由于比较运算符的原因,每次授权都失败了。从===变为==一切都一样好。

Fjarlaegur的答案是关键。我也遇到了同样的问题:在localhost中没有问题,但在生产服务器中,由于比较运算符的原因,每次授权都失败了。已从===更改为==且一切正常。

请检查策略类文件的权限,并尝试运行composer dump-autoload@SyedFaisal如何在服务器上运行composer?您是否具有服务器的ssh访问权限?是的,我具有访问权限用户是否可以实际编辑信函?可能您的数据错误,策略工作正常?请检查策略类文件的权限,并尝试运行composer dump-autoload@SyedFaisal如何在服务器上运行composer?您是否具有服务器的ssh访问权限?是的,我具有访问权限用户是否可以实际编辑信函?可能是您的数据错误,而策略工作正常?是您做的
==
,而不是
=
。使用
==
将强制执行相同的类型比较,并且不会像
=
那样执行隐藏类型转换。请注意,
$this->user->id
$letter->user\u id
不是同一类型,或者
$this->user->role\u id
不是整数。通过使用
==
它不会比较类型,因此它将返回true。尝试
dd()
变量,然后您可以在浏览器中看到类型。您使用了
==
而不是
=
。使用
==
将强制执行相同的类型比较,并且不会像
=
那样执行隐藏类型转换。请注意,
$this->user->id
$letter->user\u id
不是同一类型,或者
$this->user->role\u id
不是整数。通过使用
==
它不会比较类型,因此它将返回true。尝试
dd()
变量,然后您可以在浏览器中看到类型。
class LetterController extends Controller
{
protected $user;
public function __construct()
{
    $this->middleware(function ($request, $next){
       $this->user = Auth::user();
        return $next($request);
    });

}
public function edit(Letter $letter)
{
    if($this->user->can('update', $letter)){           
       //edit
    }
    else
        abort('403', 'Access Denied');
}
    Route::get('/clear-cache', function() {
        $exitCode = \Illuminate\Support\Facades\Artisan::call('cache:clear');
    });