Laravel如何从会话中获取用户ID?

3

好的,现在我知道如果我使用文件驱动程序来管理会话,那么这些会话将保存在/storage/framework/sessions目录中。当我调用Session::getId()时,会返回存储在该目录下的会话ID。

当我打开该会话时,它看起来像这样:

a:7:{s:6:"_token";s:40:"hgG3c6DQ5XHEvwK7925CmfGUK54dhFPIWB2kFCUz";s:3:"url";a:0:{}s:9:"_previous";a:1:{s:3:"url";s:27:"http://e-learning.local/p2p";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}s:50:"login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d";i:6;s:3:"key";s:8:"smothing";s:22:"PHPDEBUGBAR_STACK_DATA";a:0:{}}

这是本地开发,所以不用担心发布会话

我想知道为什么根本没有用户ID或用户名!Laravel如何从此会话中获取认证用户!

需要匹配的值是什么?

例如,Auth :: id()从会话中获取用户ID,但是如何获取它!如果会话中没有关于用户ID或其他内容的指示符:\

此外,如果我拥有用户的会话ID,并且由于我正在在Laravel内部使用另一个框架构建另一个应用程序(但它们应该具有相同的用户),因此无法使用Auth :: id()获取用户ID,我可以从会话中获取用户吗?


显然,密钥已经被哈希处理,要访问用户信息,您必须对其进行解码。这样,没有服务器访问权限的人就无法从会话文件中获取用户信息。 - Fatemeh Majd
@FatemehMajd 很好,如果我有会话 ID,如何进行解密? - shamaseen
我不知道确切的方法,但我知道它与app_key有关。 - Fatemeh Majd
1个回答

0
在我的应用程序中,我发现用户ID被列为此动态密钥“login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d”的值。
这是我运行的代码,以获取所有用户的会话并识别其会话ID以及用户ID:
        foreach (glob(base_path()."/storage/framework/sessions/*") as $filename) {
            foreach (unserialize( file_get_contents($filename) ) as $key => $value) {
                if(substr_count($key, 'login_web') > 0){
                    echo "Session ID: " . basename($filename) . " - User ID: ".$value."<br>";
                }
            }
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接