我正在使用CodeIgniter和RestServer实现构建一个APIhttps://github.com/chriskacerguis/codeigniter-restserver
我想使用会话身份验证模式,所以我在配置/rest.php中设置了这个:
$config['rest_auth'] = 'session';
$config['auth_source'] = 'userdata';
在config/config中。php:
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
我有一个控制器身份验证,其代码如下:
class Auth extends My_Controller
{
public function __Construct(){
parent::__construct();
}
public function index(){
$user = array(
"id" => "1",
"first_name" => "First",
"insertion" => "",
"last_name" => "Last"
);
$this->session->userdata = $user;
pr($this->session->userdata);
}
}
会话存储在数据库中,并包含来自$user的数据。pr回显数据(pr在钩子中定义,并打印r($data))
但是当我运行一个扩展REST_控制器的控制器时,我总是得到一个{“status”:false,“error”:“Unauthorized”}错误。
我已经搜索了很多,但是我找不到解决这个问题的方法(或者没有人使用会话身份验证方法?),但是也许这里有人知道解决方案?
谢谢
编辑:我的API函数之一的控制器:
class Club extends REST_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('Club_model');
}
public function index_get(){
if(!$this->get('id')){
$clubs = $this->Club_model->get_all_clubs();
}else{
$clubs = $this->Club_model->get_club($this->get('id'));
}
if($clubs){
$this->response($clubs, 200);
}else{
$this->response(null, 404);
}
}
编辑2:autoload.php我在配置/autoload.php中添加了会话
$autoload['libraries'] = array('database','session');
这不是错误
您必须将会话变量写入
$config['auth_source'] = '';
我编写了这段代码并解决了这个问题(在config/rest.php中从上到下替换代码)
$config['auth_source'] = '__ci_last_regenerate';
测试这个。
$user = array(
"id" => "1",
"first_name" => "First",
"insertion" => "",
"last_name" => "Last"
);
$this->session->userdata = $user;
然后以您的配置为例
$config['auth_source']='last_name';
Django 提供对匿名会话的完全支持。其会话框架让你根据各个站点的访问者存储和访问任意数据。它在服务器端存储数据并抽象Cookie 的发送和接收。Cookie 包含会话的ID —— 不是数据本身(除非你使用基于Cookie 的后端)。 启用会话 会话是通过一个中间件实现的。 为了启用会话功能,需要这样做: 编辑MIDDLEWARE_CLASSES 设置并确保它包含'django.contrib.
会话(Cookie)查询与修改操作类 进程: 主进程 1 const {session} = require('electron') 2 //查询所有Cookie。 3 session.defaultSession.cookies.get({}, (error, cookies) => { 4 console.log(error, cookies) 5 }) 6 //查询与特定网址相关联的所有C
分布式的 servlet 容器必须支持 Java EE 实现机制所必需的其他 Java EE 对象从一个 JVM 迁移到另一个。
超文本传输协议(HTTP)被设计为一种无状态协议。为构建有效的 Web 应用,使来自一个特定的客户端的请求彼此相关联是必要的。随时间的推移,演变了许多会话跟踪机制,这些机制直接使用对程序员而言是困难或麻烦的。 该规范定义了一个简单的 HttpSession 接口,允许 servlet 容器使用几种方法来跟踪用户会话,而不会使应用开发人员陷入到这些方法的细节中。
会话功能的开启,首先要配置hi-nginx。如下所示: userid on; userid_name SESSIONID; userid_domain localhost; userid_path /; userid_expires 5m; hi_need_cookies on; hi_need_session on; 特别要注意的是,us
我在Tomcat7中有一个web应用程序,它将会话中的用户信息作为DTO对象保存。我还为我的项目启用了Spring Security性,如果用户没有会话,它会自动将用户重定向到登录页面。 如果我登录到应用程序一次,然后在Eclipse中重新启动Tomcat,会发生的情况是,我的会话被冲出,但cookie没有运行。 Edit:尽管Firefox说,但如果关闭并重新启动Firefox,cookie仍然
在发布这个问题之前,我谷歌了很多这个问题,并且在网络Socket@ServerEndpoint中从HttpServletRequest访问Http会话是我能找到的最好的问题/答案之一,但它似乎不能解决我的问题。 我可以通过这种方式从websocket访问HttpSession,但是我无法访问与普通HTTP请求相同的CDI会话bean实例。 我也尝试在会话中存储Weld实例,并尝试在WebSocke
成功登录后,我想用新的url继续进行进一步的请求处理。但url正在调用springmvc中的公开服务,其中的安全配置不会检查会话身份验证以获取传入url。请看下面的代码。 当jsp页面提交登录验证时,J_security_check调用目标url,该URL随后调用拦截器模式/home*并验证登录凭证。 如果我在登录之前调用公开的服务“/address/userid/”,它将直接调用服务方法,使其成