首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CometChat与laravel 5.1的集成

CometChat与laravel 5.1的集成
EN

Stack Overflow用户
提问于 2016-08-19 08:23:30
回答 2查看 663关注 0票数 3

我的问题与集成CometChat与laravel 5.1有关。

我正在尝试在Cometchat的integration.php文件中访问Laravel。我想要授予对Session类的访问权限,这样我就可以访问数据库中的会话信息(默认情况下,Cometchat使用文件会话)。目前,我已经将Laravel切换为使用文件会话。

那么,如何从Laravel访问会话,以便可以在integration.php文件中访问它呢?

EN

回答 2

Stack Overflow用户

发布于 2016-08-22 14:14:48

好的,我想我已经算出来了。下面的代码让我能够访问现有的Laravel应用程序,并且我能够访问Session甚至Sentinel。

我还添加了一个指向vendor/autoload.php的include,它现在让我可以访问QueryBuilder和其他系统。

在integration.php的顶部,我有:

代码语言:javascript
复制
// integration.php includes the laravel files to give access, it just
// didn't use it fully

$app->make('Illuminate\Contracts\Http\Kernel')->handle(Illuminate\Http\Request::capture());

$id = $app['encrypter']->decrypt($_COOKIE[$app['config']['session.cookie']]);
$app['session']->driver()->setId($id);
$app['session']->driver()->start();

这将返回当前运行的Laravel,然后我就可以执行类似$app['session']->get('dataname')的操作了

虽然有了添加的供应商/autoload.php,我现在也可以访问DB::tableSentinel::getUser()

票数 1
EN

Stack Overflow用户

发布于 2016-08-22 17:36:04

请在include_once( dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'bootstrap'.DIRECTORY_SEPARATOR.'app.php');行之后添加以下行。

代码语言:javascript
复制
include_once( dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'app'.DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'Controllers'.DIRECTORY_SEPARATOR.'Auth'.DIRECTORY_SEPARATOR.'app.php');

在integration.php文件中将getUserID()函数替换为以下内容,或者您可以从http://my.cometchat.com下载用于Larave5的CometChat包

代码语言:javascript
复制
function getUserID() {
    $userid = 0;
    if (!empty($_SESSION['basedata']) && $_SESSION['basedata'] != 'null') {
        $_REQUEST['basedata'] = $_SESSION['basedata'];
    }

    if (!empty($_REQUEST['basedata'])) {
        if (function_exists('mcrypt_encrypt') && defined('ENCRYPT_USERID') && ENCRYPT_USERID == '1') {
            $key = "";
            if( defined('KEY_A') && defined('KEY_B') && defined('KEY_C') ){
                $key = KEY_A.KEY_B.KEY_C;
            }
            $uid = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode(rawurldecode($_REQUEST['basedata'])), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
            if (intval($uid) > 0) {
                $userid = $uid;
            }
        } else {
            $userid = $_REQUEST['basedata'];
        }
    }
    if (!empty($_COOKIE['laravel_session'])) {    
        $app = app();
        $kernel = $app->make('Illuminate\Contracts\Http\Kernel');
        $response = $kernel->handle(
            $request = Illuminate\Http\Request::capture()
            );
        $id = $app['encrypter']->decrypt($_COOKIE[$app['config']['session.cookie']]);
        $app['session']->driver()->setId($id);
        $app['session']->driver()->start();
        if($app['auth']->user()!= NULL){
            $userid = $app['auth']->user()->id;
        }
    }
    $userid = intval($userid);
    return $userid;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39029385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档