【问题标题】:RESTful service - using Phil Sturgeon Rest Server : Logic / function for validating the users with their username and password?RESTful 服务 - 使用 Phil Sturgeon Rest Server:使用用户名和密码验证用户的逻辑/功能?
【发布时间】:2015-10-04 08:04:15
【问题描述】:

我正在使用 Phil Sturgeon Rest Server 编写一个简单的 RESTful 服务。谁能给我一个使用用户名和密码登录的解决方案。我无需登录即可获得所有 json 响应。

问题1$config['rest_auth'] = 'basic';

遇到错误

配置文件ldap.php不存在。

$config['rest_auth'] = 'digest'; 也是如此

我之前没有使用过“ldap”,除了一些基本信息之外不知道它是如何工作的。那么你能告诉我这个错误的原因是什么吗?

尝试过的解决方案

我将 $config['auth_source'] = 'ldap'; 的值更改为 $config['auth_source'] = ''; ,现在 REST 登录用户名适用于 basic 和 digest ,即;

$config['rest_auth'] = 'basic';$config['rest_auth'] = 'digest';

$config['rest_valid_logins'] = ['admin' => '1234','sudheesh'=>'test'];

普遍存在的问题:无法使用会话进行身份验证

尝试了 Phil Sturgeon 的注释,即;

注意:如果“rest_auth”设置为“session”,则将“auth_source”更改为 会话变量的名称

如何在 MODEL 中创建会话,在这里:

if ($query->num_rows() == 1) {
            // If there is a user, then create session data
            $row = $query->row();
            $data = array(
                'id' => $row->id,
                'name' => $row->full_name,
                'email' => $row->email,
                'phone' => $row->phone,
                'acc_status' => $row->rec_status,
                'validated' => true

            );
            $this->session->set_userdata($data);
            //$this->session->set_authkey('1e957ebc35631ab22d5bd6526bd14ea2');
            //print_r($data);
            return $data;

问题是:如何将“auth_source”更改为 会话变量的名称,

现在是$config['auth_source'] = ''

我是否必须将其更改为:$config['validated'],如果我这样做无法获得访问权限,我已阅读here

如果您将此库绑定到客户端的 AJAX 端点 使用 PHP 会话进行身份验证,那么您可能不喜欢其中任何一个 摘要也不是基本的身份验证方法。在这种情况下,你可以告诉 REST 库要检查的 PHP 会话变量。如果 变量存在,则用户被授权。这将取决于您的 应用程序来设置该变量。您可以在中定义变量 $config['auth_source']。然后告诉库使用 php 会话 通过将$config['rest_auth'] 设置为session 来实现变量。

有什么建议吗?

问题 2:如何向具有有效用户名和密码的用户授予 API 访问权限?

谁能向我提供有关如何实现此功能的功能或详细信息?

其他疑问

$config['rest_valid_logins'] = ['admin' => '1234'];

此“REST 登录用户名”的描述表明,如果配置了 ldap,则忽略此选项。

问题:如何在不配置 LDAP 的情况下使用此用户名和密码数组进行登录。

REST 登录类和函数

这表示,如果使用库身份验证,请定义类和函数名。 该函数应接受两个参数:class->function($username, $password)。 在其他情况下,覆盖控制器中的函数 _perform_library_auth。

对于摘要式身份验证,库函数应为该用户名返回已存储的 md5(username:restrealm:password)。

例如:md5('admin:REST API:1234') = '1e957ebc35631ab22d5bd6526bd14ea2'

$config['auth_library_class'] = '';
$config['auth_library_function'] = '';

问题:我可以使用它来允许具有有效用户名和密码的用户访问 API 吗?如果是,您是否已经编写了任何功能来帮助在这种情况下提供帮助,我们将不胜感激。非常感谢 。 如果您知道我的任何问题的答案,请提供帮助。再次感谢。

【问题讨论】:

  • 这里似乎有很多问题...请一个帖子一个问题。
  • 好的,从现在开始我会小心的。谢谢你。由于所有这些都是相关的,并且如果其他人将来遇到同样的问题,我认为这会有所帮助。
  • REST 服务不使用登录或服务器端会话,因为它会违反无状态约束。
  • 我正在尝试从现有的 codeigniter 项目为移动应用创建 Web 服务。必须提供登录名或访问令牌,是否有任何解决方案?
  • 大多数 API 的工作方式是提供一种资源,该资源为消费者提供秘密令牌以换取有效凭据。然后,消费者必须在每个后续请求中提交令牌以证明他们的授权。

标签: php rest


【解决方案1】:

与其尝试解决 Sudheesh 发布的每一个问题,我想提出一个替代解决方案。

免责声明:这是一个商业 Joomla 插件,所以在继续之前请记住这一点...

在经历了与您一样的挑战后,我最终为 Joomla 构建了一个 RESTful API 框架,由 Slim PHP 微框架提供支持。这让我能够利用 Slim 的所有功能,包括它符合标准的路由架构、请求类型处理等等。这也解决了处理身份验证、访问控制、内容管理、数据库访问等问题,因为它运行在 Joomla CMS & Platform 框架上。

此解决方案提供您正在寻找的东西,可通过插件轻松扩展,并建立在已经流行且支持良好的 RESTful API 框架 (Slim) 之上。

有关我使用的微框架的更多信息:

http://slimframework.com

有关 Joomla RESTful API 包的更多信息:

http://getcapi.org

它提供了什么?

  • 用于管理访问令牌、API 速率限制和其他 Slim 参数的控制面板
  • 可插拔框架,允许轻松合并新的 Web 服务路由(包括即将发布的新路由,用于 MySQL、MSSQL、LDAP 等)
  • 基于 Joomla。这意味着您不必担心编写身份验证、访问控制、内容管理或其他框架。已经完成了!

如何通过 URL 请求传递用户名和密码以创建登录会话的示例:

获取用户/登录名/:用户名/:密码

“使用用户名和密码通过 Joomla 身份验证插件进行用户登录身份验证。请注意,由于凭据被传递到 URL,请注意它们可以存储在服务器日志中。API 流量必须通过安全 (HTTPS) 连接。”

响应:JSON

示例请求:

获取https://yourdomain.com/api/v1/user/login/dynus.borvalds/3jf9LfjNdiw

示例响应:

{"msg": "Authenticated","jresponse": true,"session":"1a36eab5e2b102a979918ee049f15e27","error": false,"status": 200}

然后可以使用会话 ID 强制注销该会话,方法是:

获取用户/注销/:user/:session

希望这能让您指出正确的方向。如果您有任何问题,请告诉我。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 感谢您关注 SamT。如果需要,我可以提供更多详细信息。
猜你喜欢
  • 2011-08-27
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多