2015-08-09 95 views
0

我正在使用CakePHP作为单页面应用程序的REST API。CakePHP 3删除WWW身份验证

在继续之前,每个请求都经过认证和授权。

问题是,在登录时,如果凭据错误,Cake返回401,浏览器在弹出窗口中显示自己的服务器日志。

我相信有一种方法可以通过取消设置WWW-authenticate header来阻止它,但我需要知道如何。有人可以解释如何取消设置该标题吗?

+0

您将需要提供一些更多的信息,比如你的身份验证设置代码。 – user221931

回答

1

标头正在\Cake\Auth\BasicAuthenticate认证适配器中设置。

https://github.com/cakephp/cakephp/blob/3.0.11/src/Auth/BasicAuthenticate.php#L85-L110

它是硬编码的,所以如果你想改变这种行为,你必须创建一个自定义/扩展验证适配器和覆盖此行为。

这里有一个简单的例子:

的src /认证/ MyCustomBasicAuthenticate.php

namespace App\Auth; 

use Cake\Auth\BasicAuthenticate; 
use Cake\Network\Exception\UnauthorizedException; 
use Cake\Network\Request; 
use Cake\Network\Response; 

class MyCustomBasicAuthenticate extends BasicAuthenticate 
{ 
    public function unauthenticated(Request $request, Response $response) 
    { 
     throw new UnauthorizedException(); 
    } 
} 

控制器

$this->loadComponent('Auth', [ 
    'authenticate' => [ 
     'MyCustomBasic' 
    ] 
]); 

参见