使用Redis驱动程序Laravel所有会话ID

问题描述 投票:1回答:1

在我的应用程序中,我想允许一些用户,能够签署除他/她之外的所有其他用户。我已经完成了这个功能,当Session驱动程序设置为file时,但现在我使用redis作为会话驱动程序,我无法找到任何方法来列出所有当前会话,就像我在文件时所做的那样驱动程序。

问题是:当使用redis作为会话驱动程序时,如何列出所有会话ID?

以下是我在会话驱动程序文件时使用的代码:

public function signoutAllUsers(Request $request,$sesId=null){
        //dd(session());
        if ($sesId == session()->getId()){
            $dir = storage_path().'/framework/sessions';
            $files = scandir($dir);
            foreach ($files as $file){
                if ($file == session()->getId() || strpos($file,'.') !== false){
                    //echo "ggg";
                    continue;
                }
                try{
                    unlink($dir.'/'.$file);
                }
                catch(\Exception $e){
                    return $e;
                }                

            }
            $request->session()->flash('status','success');
            $request->session()->flash('msg',__('All users have been signed out successfully'));
            return redirect('/method/create');

        }
        else{
            return redirect('/method/create');
        }

    }

Update

我找到了一个有限的解决方案,依赖于Redis门面方法command

Redis::command('keys',['*']) 然而,它返回输出看起来像:

array:4 [▼ 0 => "laravel:cav17Job1_7l46wAdE2--__" 1 => "laravel:cav17Job1_7l46wAdE2--_" 2 => "laravel:WwerTYmw2VNAfR5nKj3OOGBp2hKytSBK4MWMJ2P9" 3 => "laravel:12tyuwzoFhXPM4f6w4yRPxrYywPon4W41neq6gu" ] 以上输出包含会话ID和其他缓存条目,在我的应用程序中我也使用Redis进行缓存。

问题变成了,我怎么能给redis中存储的会话,除laravel之外的其他键是缓存键?

php session laravel-5 redis laravel-5.4
1个回答
1
投票

保持你的sessioncache分开。

在文件\config\database.php

你可以设置很多redis连接,默认情况下有一个"default"但你可以添加更多

假设您创建了'session-connection''cache-connection'

现在你需要利用它

转到文件'config \ session.php'

并将其设置为'connection' => 'session-connection',

然后去档案config\cache.php

并将其设置为

    'redis' => [
        'driver'     => 'redis',
        'connection' => 'cache-connection',
    ],

现在你可以获得你的redis会话记录了。

use Illuminate\Support\Facades\Redis;
\Log::debug( Redis::connection('session-connection')->keys('*') );
© www.soinside.com 2019 - 2024. All rights reserved.