2017-08-14 86 views
0

我想改变这种实现的基本Auth.The当前默认消息的过程中弹出的消息是:更改基本HTTP认证领域和登录对话框消息

enter image description here

服务器需要用户名和密码。

东西会更准确对我来说是:

服务器需要一个电子邮件和密码。

我的问题是,我找不到或不知道此消息的设置,如果它可以改变。大部分在线问题都是关于基本身份验证的实现,但这不是我的问题 - 我可以很好地实现它。我只需要为用户提供更准确的响应。

下面是使用回声我如何强制验证窗口:

c.Response().Header().Set(echo.HeaderWWWAuthenticate, `Basic realm="Your Email is your Username"`) 
return echo.ErrUnauthorized 

注:只有火狐显示领域的消息。 Chrome和Opera都没有。

回答

1

感谢您的答复,但他们却并不理想。我不得不做一些关于这个话题的阅读。

正确的答案是,登录提示/对话框是内置于用户代理/浏览器中的响应,无法由服务器更改。这也解释了为什么一些浏览器显示领域而其他浏览器不显示领域。

根据维基百科的基本接入认证的所有服务器所做的是:

当服务器希望用户代理本身对服务器进行身份验证,就必须对非授权的请求作出适当的反应。

未经身份验证的请求应返回其头包含HTTP 401未授权状态[4]和WWW-Authenticate字段的响应。

基本身份验证(最常用)WWW身份验证场构造如下:

WWW身份验证:基本境界=“用户可见境界”

3

这与Go无关,但实际上与浏览器在接收到该标题时的行为有关。

看来Chrome/Chromium有一个已知的问题,与开发团队认为不安全的功能有关,所以我认为您不能将其修复到您的身边,除非您使用其他方法认证机制。

在这里看到更多的细节:

https://bugs.chromium.org/p/chromium/issues/detail?id=544244#c32

+0

好知道。这在一些浏览器上回答了缺失的领域。您是否知道更改所有浏览器上显示的默认消息? – Godfrey

+3

@Godfrey:认证对话框是由浏览器创建的,你不能在服务器上修改代码。 – JimB