PHP基本auth setHeader,如果数据不正确

时间:2016-04-19 07:48:05

标签: php basic-authentication http-authentication

我正在构建API端点。此端点需要通过HTTP基本身份验证保护。

如果API请求访问我想显示http basic auth,如果数据不正确,我想抛出403禁止消息。如果数据正确,我现在只是显示“正确”。这是我的代码:

  $username = null;
  $password = null;

  // if data is sent
  if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']) ) {
      $username = $_SERVER['PHP_AUTH_USER'];
      $password = $_SERVER['PHP_AUTH_PW'];

      //perforn check if data is correct
      if($username == 'as' && $password = 'pass'){
        die(var_dump("correct"));
      }
      //if data uncorrect throw 403 code
      else
        header('HTTP/1.0 403 Forbidden');

  }

  //request HTTP auth if nothing sent
  if (!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW'])) {

      header('WWW-Authenticate: Basic realm="My Realm"');
      header('HTTP/1.0 401 Unauthorized');

      die();

  }

目前我的代码一直在触发403。知道如何解决这个与上述要求相匹配的问题吗?

1 个答案:

答案 0 :(得分:1)

你错过了一个=,它正在测试你的作业:

if($username == 'as' && $password == 'pass'){ //right here
    die(var_dump("correct"));
} else { //if data incorrect throw 403 code
    header('HTTP/1.0 403 Forbidden');
}