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

到CodeIgniter Rest API的自定义错误消息

赵渊
2023-03-14

您好,我正在使用CodeIgniter构建RESTAPIhttps://github.com/chriskacerguis/codeigniter-restserver/blob/master/application/libraries/REST_Controller.php.

在_detect_api_key()函数中,他只检查给定的Api Key是否与表中存储的密钥匹配。我修改了一点这个方法,不仅检查api密钥是否匹配,还检查用户是否激活。对于这两种情况,我得到无效的API密钥消息。

如何将消息设置为“您正在使用的API密钥未激活”或类似内容?

我使用的错误消息的文件是:

/*
 * English language
 */

$lang['text_rest_invalid_api_key'] = 'Invalid API key %s'; // %s is the REST API key
$lang['text_rest_invalid_credentials'] = 'Invalid credentials';
$lang['text_rest_ip_denied'] = 'IP denied';
$lang['text_rest_ip_unauthorized'] = 'IP unauthorized';
$lang['text_rest_unauthorized'] = 'Unauthorized';
$lang['text_rest_ajax_only'] = 'Only AJAX requests are allowed';
$lang['text_rest_api_key_unauthorized'] = 'This API key does not have access to the requested controller';
$lang['text_rest_api_key_permissions'] = 'This API key does not have enough permissions';
$lang['text_rest_api_key_time_limit'] = 'This API key has reached the time limit for this method';
$lang['text_rest_unknown_method'] = 'Unknown method';
$lang['text_rest_unsupported'] = 'Unsupported protocol';

而in_detect_api_key方法没有提及任何有关错误消息的内容,只返回false:

 if ( !($row = $this->rest->db->where($this->config->item('rest_key_column'), $key)->get($this->config->item('rest_keys_table'))->row()) ||   $isactive[0]->activated === 'no' )
            {
                return FALSE;
            }

我补充说:

$isactive[0]->activated === 'no'

有什么想法吗?

共有1个答案

燕禄
2023-03-14

试试这个

if (!($row = $this->rest->db
->where($this->config->item('rest_key_column'), $key)
->get($this->config->item('rest_keys_table'))->row())) 
{
    return array(
        "valid_key" => FALSE, 
        "error" => "text_rest_invalid_api_key"
    );
} else if($isactive[0]->activated === 'no') {
    return array(
        "valid_key" => FALSE, 
        "error" => "user_not_activated"
    );
}
 类似资料:
  • 安全测试人员声称,我应该清理返回的JSON(即转义这些符号),因为这可能会给旧的浏览器带来一些问题(即在浏览器中执行此JS代码)。 但是生成错误消息的是SpringBoot框架, 我在这里没有太多的控制权。 当然,我可以将参数定义为String,并自己进行验证,但我怀疑这是否是正确的方法。我的参数定义为Integer,我希望它保持这种方式。 做这件事最简单的方法是什么?

  • 我正在努力裁剪javax。验证。ConstraintValidator和javax。验证。根据我的需要限制ValidatorContext。我从格式错误的请求正文收到的响应消息始终采用以下形状: <代码> 此消息也以500而不是400错误请求的形式返回。我无法获得工作到解决方案来执行以下操作: 仅包括<代码> 我有以下代码: 向上面的代码发送格式错误的有效负载将导致如下消息: 我希望能够收到以下信

  • 问题内容: 我不时使用量角器1.7中引入的“预期条件”功能。 用例 : 页面对象在哪里。 如果在10秒钟内不可见,将引发错误: 这不是很可读,需要一些时间来理解和一些研究。 题: 是否可以自定义这种等待超时错误? 问题答案: 我相信有3个参数:条件,可选的超时和可选的描述消息。(我很确定这是文档:http : //angular.github.io/protractor/#/api? view=

  • 但是我不想显示这样的消息:“插入记录失败。需要名称”。 有什么方法可以在PostgreSQL中显示自定义错误消息吗?

  • 我想拦截一个错误的JSON输入,并使用Dropwizard应用程序返回自定义错误消息。我遵循了这里提到的定义自定义异常映射器的方法:http://gary-rowe.com/agilestack/2012/10/23/how-to-implement-a-runtimeexceptionmapper-for-dropwizard/。但它不适合我。同样的问题也被问到这里https://groups.

  • javascript中是否有方法使运行时在错误消息中使用不同的对象表示。 典型的错误消息 如果我们可以为对象提供比更好的表示,那将很有帮助。在其他语言中,您可以通过覆盖使其打印更好的对象表示。 然而,在这种情况下,重写toString似乎没有效果。