当前位置: 首页 > 知识库问答 >
问题:

如何使用codeigniter中的会话ID访问会话

林正平
2023-03-14

我正在Codeigniter中创建API。在这个API中,我为用户提供了一个登录函数。如果登录成功,我将在CI会话中设置用户数据,并将会话返回给用户。

现在,用户可以使用该会话ID来验证他自己的所有其他请求,如添加/更新/删除。基本上,我希望当用户发送下一个请求时,我可以根据他的会话ID验证他的凭据。

客户请求代码:

public function login()
{
    $url = 'http://localhost/bizCloudDS/server/login';
    $timestamp = gmdate("His");

    $parameters = array("reqest"=>"login", "username"=> "admin", "API_AccessKey"=> "b5741564rda4a4d91965d3b5", "GMT_Timestamp"=> $timestamp);

    $json =  json_encode($parameters);
    $encrypted = $this->bizEncrypt($json , 'enc' );

    //open connection
    $ch = curl_init();

    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, 1);
    curl_setopt($ch,CURLOPT_POSTFIELDS, $encrypted);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    echo $result;

    curl_close($ch);
}

上面是一个从客户端到服务器的登录请求示例。在服务器端,服务器验证客户端提供的凭据,如果验证返回此json响应:

{"响应代码":"200","原因":"成功","Session_ID":"eu o 1 o bq eek d 5 vt b 0 ul t 9 nj 84 kii 1 k q ni"}

现在我希望如果用户发送另一个请求,比如create_user,他将发送登录请求返回的session_id。那么我如何通过服务器端的会话ID获取会话数据呢?

这是好的做法吗?

共有2个答案

曹浩淼
2023-03-14

如果用户没有直接登录到您的系统,而是通过API使用第三方工具,那么使用会话ID没有意义,因为实际上没有传统意义上的会话。这是一次呼叫/响应。

使用某种请求签名来验证访问您的系统的个人是他们所说的人,并且有权执行他们试图执行的操作(即某种密钥散列),这似乎是一个更好的主意。对于每个调用,您将验证调用本身,而不是活动会话。

或者你可以使用持久的卷曲连接,但这可能更容易头痛。

邹慈
2023-03-14

你走错了路:

我建议:

  1. 使用数据库和cookie登录(而不是会话)。或
  2. 您需要持久的curl连接(探索CURLOPT_COOKIEJAR)来理解如何登录,然后将同一会话用于其他事情
 类似资料:
  • 我正在使用codeigniter。我有个奇怪的问题。我在用户登录时设置会话,并将其重定向到新页面。我观察到,会话有时设置,有时不设置。我尝试过使用codeigniter会话 以下是配置文件的外观:

  • 问题内容: 如何以一种优雅的方式通过id获取任何HTTP会话或Web应用程序(Java 2 EE)中当前所有活动的HTTP会话? 当前,我有一个会话,一旦创建,便将其放入,一切正常,我可以随时通过会话ID从该映射中检索HTTP会话,但是看起来对象将永远不会完成……即使会话使该映射无效仍然引用无效的会话对象…我也已经阅读了这篇文章,在我看来,这是不可接受的… 换句话说,我需要一种可能性来查看任何Ht

  • 我正在做一个项目,其中我的代码点火器放在wordpress主文件夹内,下面是我项目的结构。 codeigniter_folder有codeigniter文件。因为我在codeigniter中使用会话,我想在wordpress中访问该会话。但是当我在codeigniter中回声session_id()时,它会给我不同的值,当我在wordpress中回声session_id()时,它会给我不同的会话标

  • 这里的问题是我试图通过ajax登录到我的系统。让我给你的第一个解释一下。 当我的用户输入他的登录详细信息时,它将通过Ajax请求发送到服务器,然后在验证后,我创建一个会话条目,并保存用户ID和登录标志等信息。 然后我通过Json将这些值返回给用户,由一段javascript处理,并将用户重定向到仪表板。 如果用户未经身份验证,则显示错误。 但现在这里发生的是。当我创建会话变量时以及当用户重定向到仪

  • 我在Chrome上使用数据库的codeigniter会话有一个严重的问题:当我使用Chrome开发者工具刷新页面时,会话被破坏。 这是我的会话配置: 你知道吗?

  • 我正在使用CodeIgniter和RestServer实现构建一个APIhttps://github.com/chriskacerguis/codeigniter-restserver 我想使用会话身份验证模式,所以我在配置/rest.php中设置了这个: 在config/config中。php: 我有一个控制器身份验证,其代码如下: 会话存储在数据库中,并包含来自$user的数据。pr回显数据(