Buenos Días,
Actualmente estoy pasando mi sitio de noticias a un API-REST pero cuando le activé la seguridad para usar token y poder dar niveles de acceso de usuarios no me funciona el api con la autentificación:
para el servidor de API-REST en codeigniter utilizo este el proyecto de github
la configuración que le dí al archivo conf del rest fue este:
$config['force_https'] = FALSE;
$config['rest_default_format'] = 'json';
$config['rest_status_field_name'] = 'status';
$config['rest_message_field_name'] = 'error';
$config['enable_emulate_request'] = TRUE;
$config['rest_realm'] = 'REST API';
$config['rest_auth'] = '';
$config['auth_source'] = '';
$config['auth_library_class'] = '';
$config['auth_library_function'] = '';
$config['rest_valid_logins'] = array('admin' => '1234');
$config['rest_ip_whitelist_enabled'] = false;
$config['rest_ip_whitelist'] = '';
$config['rest_ip_blacklist_enabled'] = false;
$config['rest_ip_blacklist'] = '';
$config['rest_database_group'] = 'default';
$config['rest_keys_table'] = 'keys';
$config['rest_enable_keys'] = true;
$config['rest_key_column'] = 'key';
$config['rest_key_length'] = 40;
$config['rest_key_name'] = 'X-API-KEY';
$config['rest_logs_table'] = 'logs';
$config['rest_enable_logging'] = true;
$config['rest_access_table'] = 'access';
$config['rest_enable_access'] = FALSE;
$config['rest_logs_json_params'] = true;
$config['rest_limits_table'] = 'limits';
$config['rest_enable_limits'] = true;
$config['rest_ignore_http_accept'] = FALSE;
$config['rest_ajax_only'] = FALSE;
Tengo en el view de prueba: home.php
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
//hacemos la petición a la api con ajax para obtener un usuario por su id
$.ajax({
url:'http://localhost/RESTFULL/api/seccion/x-api-key/<?php echo $token;?>',
type:'GET',
success: function(data){
console.log(data);
},
error: function(response){
console.log(response);
}
});
</script>
mi Crontolador Home: Home.php
<?php
class Home extends CI_Controller
{
public function __construct(){
parent::__construct();
$this->load->model("MRegister");
}
public function index(){
$generate = $this->MRegister->new_api_key($level = false,$ignore_limits = false,$is_private_key = false,$ip_addresses = "");
$data = array("titulo" => "Api de RSC","token" => $generate);
$this->load->helper(array('form','url'));
$this->load->view("home", $data);
}
}
mi Controlador Seccion: Seccion.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require_once(APPPATH . 'libraries/REST_Controller.php');
class Seccion extends REST_Controller {
public function __construct(){
parent::__construct();
}
function index_get(){
$secciones = $this->MSeccion->listar();
if ($secciones) {
$this->response(array('response' => $secciones), 200); // Retorna todas las secciones
}else{
$this->response(array('error' => "No hay Secciones"), 404);
}
}
}
Este código funcionaba bien sin poner el token y todo eso de seguridad pero ahora no funciona para nada.
Saludos Atentamente Dairon