【发布时间】: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 的工作方式是提供一种资源,该资源为消费者提供秘密令牌以换取有效凭据。然后,消费者必须在每个后续请求中提交令牌以证明他们的授权。