如何从 laravel 5 中的 cookie 手动验证用户?

How to authenticate user manually from cookie in laravel 5?

我正在使用 websockets,我正在使用 Rachet。每当用户尝试建立连接时,我都需要进行身份验证。我的后端使用 laravel 5 进行所有 http 身份验证。

我的服务器代码是这样的:

    public function onOpen(ConnectionInterface $conn, RequestInterface $request = null) {
       if (null === $request) {
            throw new \UnexpectedValueException('$request can not be null');
       }
       $cookie = $request->getCookie('laravel_session'); 
//do authentification with cookie if possible

我尝试使用 laravel

Auth::user()

我收到以下错误:

Call to member function user() on null

每当我尝试从浏览器连接到 websockets 时,它都会使用 ws 协议和 rachets 服务器,因此 laravel 路由永远不会被调用。这就是我尝试使用 Auth::user() 时出现错误的原因吗?

我可以使用该 cookie 来验证用户是否已登录吗?还有其他解决方案吗?会涉及哪些安全风险?

我得到了我自己。

require_once getcwd() . '/bootstrap/autoload.php';
        $app = require getcwd() . '/bootstrap/app.php';

        $kernel = $app->make(\Illuminate\Contracts\Http\Kernel::class);
//        var_dump('kernel booted successfully');

        $response = $kernel->handle(
            $request = \Illuminate\Http\Request::capture()
        );

//        var_dump('Response object created');

//        var_dump('Decrypting cookie : ');
//        var_dump($cookie);
        $id = $app['encrypter']->decrypt($cookie);

//        var_dump('Id decrypted : '.$id);
        $app['session']->driver()->setId($id);
        $app['session']->driver()->start();

        $user = $app['auth']->check();
        //if not logged in
        if( $user == false ){
            return false;
        }else{
             //return instance of an app
            return $app;
            //to get user details: $app['auth']->user()
        }