我正在使用Phil Sturgeon Rest Server编写简单的RESTful服务。任何人都可以使用用户名和密码为我提供登录解决方案。我可以在没有登录的情况下获得所有json响应。
Porblem 1 :$config['rest_auth'] = 'basic';
遇到错误
配置文件ldap.php不存在。
也是如此
$config['rest_auth'] = 'digest';
我还没有使用" ldap"早些时候除了一些基本信息外,不知道它是如何工作的。那么请你告诉我这个错误可能是什么原因?
尝试解决方案
我将
$config['auth_source'] = 'ldap';
的值更改为$config['auth_source'] = '';
,现在REST登录用户名适用于基本和摘要,即;
$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(用户名:restrealm:password)。
例如:md5(' admin:REST API:1234')=' 1e957ebc35631ab22d5bd6526bd14ea2'
$config['auth_library_class'] = '';
$config['auth_library_function'] = '';
问题:我可以使用它来允许拥有有效用户名和密码的用户访问API吗?如果是,您是否已经编写任何功能以帮助在此方案中,任何帮助将非常感谢。非常感谢你 。 如果您知道我的任何问题的答案,请帮助。再次感谢。
答案 0 :(得分:1)
我不想试图解决Sudheesh发布的每一个问题,而是提出另一种解决方案。
免责声明:这是一个商业Joomla插件,所以请在继续之前牢记这一点......
在经历了与您自己相同的挑战后,我最终为Joomla构建了一个RESTful API框架,由Slim PHP微框架提供支持。这使我能够利用Slim的所有功能,包括它符合标准的路由架构,请求类型处理等等。这也解决了处理身份验证,访问控制,内容管理,数据库访问等问题,因为它运行在Joomla CMS&平台框架。
此解决方案提供了您正在寻找的内容,可通过插件轻松扩展,并构建在已经流行且支持良好的RESTful API框架(Slim)上。
有关我使用的微框架的更多信息:
有关Joomla RESTful API包的更多信息:
它提供了什么?
如何通过URL请求传递用户名和密码以创建登录会话的示例:
GET user / login /:username /:password
"使用用户名和密码通过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强制使用以下方法注销该会话:
获取用户/注销/:用户/:会话
希望这能让你指向正确的方向。如果您有任何问题,请告诉我。