Symfony HTTP标头授权标记返回NULL

时间:2016-09-24 10:13:38

标签: php symfony http http-headers authorization

我正在尝试使用Symfony 2.8 AbstractGuardAuthenticator来创建一个简单的Authenticator,它可以使用令牌或Base64编码的用户名:密码。这个概念很简单,但授权标签总是返回NULL,原因我不明白。

通过Postman发送的HTTP标头:

POST /testproject/www/app_dev.php/test HTTP/1.1
Host: localhost
Authorization: Basic dGVzdDoxMjM0
Cache-Control: no-cache
Postman-Token: 30a64d1b-e4e2-4d01-34f3-5e09b90379b6
Content-Type: multipart/form-data; boundary=----    WebKitFormBoundary7MA4YWxkTrZu0gW

简单检查代码:

class TokenAuthenticator extends AbstractGuardAuthenticator

public function getCredentials(Request $request) {

        var_dump(base64_decode('dGVzdDoxMjM0'));
        die(var_dump($request->request->get('Authorization')));
}

输出:

string(9) "test:1234"
NULL

我是否在这里打电话请求正确的部分从标头包中取出一些东西?我觉得我在这里错过了一些非常明显的东西。

当我转储标题时,我可以看到真正令人沮丧的标记:

var_dump($request->headers);

    object(Symfony\Component\HttpFoundation\HeaderBag)#15 (2) {
      ["headers":protected]=>
      array(15) {
//other variables cut out because of length
        ["authorization"]=>
        array(1) {
          [0]=>
          string(18) "Basic dGVzdDoxMjM0"
        }
    }

解决方案来自qooplmao

通过以下方式访问headerbag而不是请求:

$request->headers->get('authorization');

0 个答案:

没有答案