问题:在做微信小程序请求后端接口的时候,需要使用到Authriation进行授权,结果每次登录的时候都会出现这个弹窗。对Authriation不熟悉的,可以去阅读 阮一峰-理解OAuth 2.0

需要进行身份验证

原因

部分代码如下,按说使用了Authriation授权时,会将用户名和密码用 base64 进行编码然后放到header中传入后端代码,就像 ‘Authorization’: ‘Basic V0VDSEFUOldFQ0hBVA=’,在服务端也会有固定的用户名密码,与之比较,相同则身份通过,否则不通过才会出现上述这种弹窗。

解决

对用户名和密码进行 base64 编码, 如下图:
base64编码

在输入框中输入用户名和密码,格式为:用户名:密码,比如WECHAT:WECHAT,也就是用户名是WECHAT,密码也是WECHAT。使用正确的编码之后,因为用户名和密码都正确,所以就不会再出现那种要求验证身份的对话框了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wx.request({
// .....
data: {
grant_type: 'password',
username: user.username,
password: user.password
},
header: {
'Authorization': 'Basic V0VDSEFUOldFQ0hBVA=',
'Content-Type': 'application/x-www-form-urlencoded'
},
success: function (res) {
// ....
}
});

注意

使用 base64 进行编码时,要注意不要多加了换行或者空格,得到的结果都是不一样的。

出现验证身份对话框的情景总结如下:

  • 用户名和密码错误;
  • 用户名和密码正确,但是使用 base64 编码错误,常见情形:多加了换行符或者空格符。