【问题标题】:Codeingiter - RESTful API Key auth for only certain RoutesCodeigniter - 仅针对某些路由的 RESTful API 密钥身份验证
【发布时间】:2015-11-17 12:53:10
【问题描述】:

我正在构建一个 RESTful API 服务器。目前一切正常。

我正在为 CodeIgniter 使用 Phil Sturgeon RESTful 服务器实现,它非常流行。 https://github.com/chriskacerguis/codeigniter-restserver

我需要的是对该包已经提供的一些路由进行基本 API 密钥身份验证,但它确实适用于所有 API 路由。

我不想对所有路由进行身份验证..因为某些 API 应该在没有身份验证的情况下调用 我们如何实现它..

注意:我不能切换技术或框架,因为我目前正在使用之前开发并正在使用的模型。

例如没有身份验证的路由:$route['api/products'] = "api/Products/allProducts";

例如带有身份验证的路由:$route['api/devices/update'] = "api/Devices/updateDevice";

【问题讨论】:

  • 您应该将自己的 AUTH 定义为库并在 Controller 中使用它。您的库将决定哪个 API 调用需要访问。希望这会有所帮助
  • 检查 APPPATH . 'config/rest.php' 文件在第 150-177 行之间。有你的答案。
  • @Tpojka .. 没有这样的代码 .. 事实上我完全检查了 rest.php ......唯一的覆盖方法只能覆盖用户名/密码验证

标签: php codeigniter api rest


【解决方案1】:

尝试:

$config['auth_override_class_method']['products']['allproducts'] = 'none';
$config['auth_override_class_method']['devices']['updatedevice'] = 'basic';

【讨论】:

  • 不幸的是,它不会覆盖密钥身份验证.. 仅适用于用户名/通过身份验证
【解决方案2】:

将以下代码添加到“application/config/rest.php

$config['auth_override_class_method']['Products']['allProducts'] = "none";
$config['auth_override_class_method']['Devices']['updateDevice'] = FALSE;

或者你可以添加这个。

$config['auth_override_class_method']['Products']['allProducts'] = "none";

因为你的应用会自动激活token / 为false,所以不需要添加再次激活token的路由。

【讨论】:

    猜你喜欢
    • 2012-02-04
    • 2016-11-13
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2011-11-28
    相关资源
    最近更新 更多