/broadcasting/auth 出現 403 問題的最好解決辦法
原因是獲取不到登入使用者的資訊,至於導致原因可能是你本身更改原生的登入認證類,導致不相容問題之類。
本人是在用dcat-admin 開發過程中發現dcat的認證模式與laravel 原生的有差異,導致Request
獲取不到 user
資訊
解決辦法
重寫原生類\Illuminate\Broadcasting\BroadcastController
- 首先在app下建立一個新類
主要目的就是request
中注入認證通過的 user
資訊,dcatAdmin是通過Admin::user()
獲取,你可以根據自己實際的情況做調整
...
class BroadcastAuthController extends BroadcastController
{
public function authenticate(Request $request)
{
$request->setUserResolver(function() {
return Admin::user();
});
return parent::authenticate($request); // TODO: Change the autogenerated stub
}
}
- 路由配置檔案中加入
/broadcasting/auth
...
$router->match(
['get', 'post'], '/broadcasting/auth',
'BroadcastAuthController@authenticate'
);
- 最後註釋掉原生的路由
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// Broadcast::routes();
require base_path('routes/channels.php');
}
}
到此403問題就解決了
本作品採用《CC 協議》,轉載必須註明作者和本文連結