代码点火器休息服务器摘要或基本身份验证无法登录


Codeigniter Rest server Digest or Basic auth cant login

我正在使用Phil Sturgeon的REST Server。我在设置基本或摘要式身份验证时遇到问题。调用该方法时,我会收到提示输入用户名和密码的对话框,即使我输入了正确的用户名和密码,它也不会接受它。我该如何对此进行故障排除?是我的虚拟主机不允许吗?

这就是我在休息中设置身份验证的方式.php:其余的都是默认的。

$config['rest_auth']         = 'Basic';
$config['auth_source']       = '';
$config['rest_valid_logins'] = array('admin' => 'password');

我自己找到了解决方案。我不得不在我的.htaccess文件中添加它。

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]  

很抱歉写了这么旧的线程。以为这样可以节省某人的时间。

请注意,此解决方案仅适用于基本身份验证。我还没有用摘要身份验证对此进行测试。

我需要稍微调整一下@Tan的答案才能使.htaccess正常工作。

我从RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]中删除了[L],并将重写规则放在RewriteEngine on之后

.htaccess 文件:

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#Other rules follow

接下来,我需要更改应用程序/配置目录中其余.php配置文件。我所做的更改如下:

$config['auth_source'] = 'ldap'$config['auth_source'] = 'library'$config['auth_library_class'] = ''$config['auth_library_class'] = 'api_auth' $config['auth_library_function'] = ''$config['auth_library_function'] = 'login'

然后,我创建了一个名为 Api_auth.php 的新库文件,其中包含以下代码:

<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Api_auth
{
    public function login($username, $password) {
        if($username == 'admin' && $password == '1234')
        {
            return true;            
        }
        else
        {
            return false;           
        }           
    }
}

希望有一天这对某人有所帮助。

这对

我不起作用,但这确实如此

对我来说,它将运行 php 的服务器作为快速CGI,而不是像您的本地主机那样php5_module。(要找出这个,请运行phpinfo - 服务器API:CGI/FastCGI(

这是解决方案http://ellislab.com/forums/viewthread/173823/#825912

.htaccess

RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L] 

图书馆/REST_Controller.php

以前

// most other servers
elseif ($this->input->server('HTTP_AUTHENTICATION'))
{
if (strpos(strtolower($this->input->server('HTTP_AUTHENTICATION')),'basic') === 0)
{
    list($username,$password) = explode(':',base64_decode(substr($this->input-  >server('HTTP_AUTHORIZATION'), 6)));
}
} 

// most other servers
elseif ( $this->input->server('HTTP_AUTHENTICATION') || $this->input-    >server('REDIRECT_REMOTE_USER') )
{
$HTTP_SERVER_AUTH = ($this->input->server('HTTP_AUTHENTICATION')) ? $this->input->server('HTTP_AUTHENTICATION') : $this->input->server('REDIRECT_REMOTE_USER'); 
if (strpos(strtolower($HTTP_SERVER_AUTH),'basic') === 0)
{
    list($username,$password) = explode(':',base64_decode(substr($HTTP_SERVER_AUTH, 6)));
}
}