0
我正在使用CakePHP作为单页面应用程序的REST API。CakePHP 3删除WWW身份验证
在继续之前,每个请求都经过认证和授权。
问题是,在登录时,如果凭据错误,Cake返回401,浏览器在弹出窗口中显示自己的服务器日志。
我相信有一种方法可以通过取消设置WWW-authenticate header
来阻止它,但我需要知道如何。有人可以解释如何取消设置该标题吗?
我正在使用CakePHP作为单页面应用程序的REST API。CakePHP 3删除WWW身份验证
在继续之前,每个请求都经过认证和授权。
问题是,在登录时,如果凭据错误,Cake返回401,浏览器在弹出窗口中显示自己的服务器日志。
我相信有一种方法可以通过取消设置WWW-authenticate header
来阻止它,但我需要知道如何。有人可以解释如何取消设置该标题吗?
标头正在\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'
]
]);
参见
您将需要提供一些更多的信息,比如你的身份验证设置代码。 – user221931