RESTful服务 - 使用Phil Sturgeon Rest服务器:使用用户名和密码验证用户的逻辑/功能?

时间:2015-10-04 08:04:15

标签: php rest

我正在使用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吗?如果是,您是否已经编写任何功能以帮助在此方案中,任何帮助将非常感谢。非常感谢你 。 如果您知道我的任何问题的答案,请帮助。再次感谢。

1 个答案:

答案 0 :(得分:1)

我不想试图解决Sudheesh发布的每一个问题,而是提出另一种解决方案。

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

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

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

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

http://slimframework.com

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

http://getcapi.org

它提供了什么?

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

如何通过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强制使用以下方法注销该会话:

获取用户/注销/:用户/:会话

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