【问题标题】:How to authenticate user manually from cookie in laravel 5?如何从 laravel 5 中的 cookie 手动验证用户身份?
【发布时间】:2015-09-30 10:00:26
【问题描述】:

我正在研究 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()

我收到以下错误:

在 null 时调用成员函数 user()

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

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

【问题讨论】:

    标签: php laravel cookies laravel-5 session-variables


    【解决方案1】:

    我明白了。

    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()
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 2019-02-07
      • 2017-12-28
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多