我已经在 codeigniter 中有应用程序,现在我正在从这个应用程序开发 android。将此应用程序用作服务器端并在 android 中执行客户端控制台。在服务器中,我保持会话。但在 android 请求中,我无法维护会话。而不是我在登录请求的第一个请求时在服务器中创建 GUID 并存储在客户端并存储在客户表中,之后每个请求客户端将发送 GUID 进行身份验证。现在我的问题是从 android codeigniter 获取的每个请求都创建具有不同会话 id 的会话(每个请求都生成新的会话 id)。如何避免创建会话并存储到数据库中。(仅适用于 android 请求,但必须存储浏览器请求)
问问题
4008 次
2 回答
2
我设法在 Codeigniter 3.1.3 中扩展了 CI_Session。这是我所做的:
创建文件 application/libraries/Session/MY_Session.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Session extends CI_Session {
public function __construct(array $params = array())
{
if ( $this->ignore_sessions() )
return;
parent::__construct();
}
function ignore_sessions()
{
$uri = str_replace ("//", "/", $_SERVER['REQUEST_URI']);
if ( strpos($uri, '/ignore_this_controller/') === 0 )
return true;
return false;
}
}
您可能还想在 config/autoload.php 中添加“会话”:
$autoload['libraries'] = array('session',....)
于 2017-02-20T20:07:12.267 回答
1
您的问题现在已经很老了,但是对于遇到此问题的任何人,您都应该扩展 CI_Session 库并覆盖sess_create方法。在您的方法中,测试以查看发出请求的用户代理。然后,如果用户代理不是 android 平台,则仅允许创建会话。
public function sess_create
{
//load user agent library
$this->CI->load->library('user_agent');
/**test request to see if its from android
* you can update the user_agents collection to suit more specific needs
*/
if($this->agent->platform() !== 'android'):
//create session for all non-android platforms
parent::sess_create();
endif;
}
于 2015-07-02T12:50:20.507 回答