我正在使用Ratchet作为websockets。它一般工作,但我想在我的ExampleController Laravels Auth
中使用。它应该很容易,但这不起作用:
<?php namespace Annotation\Http\Controllers;
use Auth;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class ExampleController extends Controller implements MessageComponentInterface {
public function onOpen(ConnectionInterface $conn) {
echo Auth::id();
//etc.
echo "New Connection! ({$conn->resourceId})";
}
}
当我在下面的websocket-server.php(位于laravel的根目录)文件中初始化我的Controller时,我总是得到一个类Auth
未找到异常:
<?php
require __DIR__.'/vendor/autoload.php';
use Ratchet\Server\IoServer;
use Annotation\Http\Controllers\CollaborativeController;
$server = IoServer::factory(
new ExampleController(),
8080
);
$server->run();
如果我将ExampleController用作带路由的常用控制器,则会找到Auth类。 (我也无法使用auth帮助器或与laravel相关的任何东西)
为什么会这样?因为Laravel尚未初始化或者我是否需要添加路径?
答案 0 :(得分:0)
auth函数返回一个验证器实例。为方便起见,您可以使用它而不是Auth外观:
echo auth()->user()->id;
答案 1 :(得分:0)
如果要加载中间件,请将以下行添加到server.php。 Auth是一个中间件,它没有初始化和加载。
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php'; (set a proper path to your bootstrap)