Der*_*idi 3 php authentication laravel horizon
我在我的本地环境中有 testet laravel Horizon,一切都按预期工作。当我切换到生产域/地平线时会抛出 403 错误。我已经按照文档中的说明在 HorizonServiceProvider 中设置了门 - 第一步只是在没有身份验证的情况下获得访问权限。我的门现在看起来像这样:
{
Gate::define('viewHorizon', function ($user = null) {
return true;
});
}
Run Code Online (Sandbox Code Playgroud)
谁能建议我缺少什么?
错误是因为 Horizon 首先进入boot方法,所以我建议您在 HorizonServiceProvider.php 中编辑boot方法以允许您的请求,如下所示:
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
parent::boot();
Horizon::auth(function ($request) {
if ($request->ajax()){
return true;
}
else if (isset($request->let_me_go) && $request->let_me_go == 'ok'){
return true;
}else{
throw new UnauthorizedHttpException('Unauthorized');
}
});
}Run Code Online (Sandbox Code Playgroud)
因此,当您访问生产服务器时,需要传递如下参数:
my-生产-site.com/horizon/dashboard?let_me_go=ok
您需要将以下方法添加到App\Providers\HorizonServiceProvider类中:
class HorizonServiceProvider extends ServiceProvider {
// ...
protected function authorization()
{
Horizon::auth(function () {
return true;
});
}
}
Run Code Online (Sandbox Code Playgroud)
此方法覆盖对 HTTP 请求进行身份验证的父方法。
检查此 GitHub 评论:https : //github.com/laravel/horizon/issues/563#issuecomment-480882947
您可能需要注册 Horizon 的服务提供商。
在config/app.php:
'providers' => [
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
...
App\Providers\TelescopeServiceProvider::class,
App\Providers\HorizonServiceProvider::class,
],
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3506 次 |
| 最近记录: |