微信小程序出现【需要进行身份验证】弹框解决方法

问题

在做微信小程序时,需要使用 Authorization 进行授权,结果每次登录的时候都出现这个弹窗。对 Authorization 不熟悉的,可以阅读 阮一峰-理解OAuth 2.0

微信小程序-需要进行身份验证

原因

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

wx.request({
      // .....
      data: {
        grant_type: 'password',
        username: user.username,
        password: user.password
      },
      header: {
        'Authorization': 'Basic V0VDSEFUOldFQ0hBVAo=',
        'Content-Type': 'application/x-www-form-urlencoded'
      },        
      success: function (res) {
          // ....  
      }
});

这里的 V0VDSEFUOldFQ0hBVAo=base64 解码之后确实是 WECHAT:WECHAT,格式为:用户名:密码,也就是用户名是 WECHAT,密码也是 WECHAT。截图如下,乍看好像是解码为 WECHAT:WECHAT,但事实并不是这样的。

base64 解码

在上面文本框中输入 WECHAT:WECHAT,点击编码按钮得到 V0VDSEFUOldFQ0hBVA==,可以看到与先前的 V0VDSEFUOldFQ0hBVAo= 并不一样。无疑下面这种直接对 WECHAT:WECHAT 进行编码得到的结果肯定是正确的,那上面那种是怎么出来的呢??可以试试在上面对话框输入 WECHAT:WECHAT 并且按一下 Enter 键进行换行,再点击编码就得到了之前的那种编码值。

base64 编码

可见:使用正确的编码之后,因为用户名和密码都正确,所以就不会再出现那种要求验证身份的对话框了。

解决

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

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

  • 用户名和密码错误;
  • 用户名和密码正确,但是使用 base64 编码错误,常见情形:多加了换行符或者空格符。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,499评论 6 152
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 5,260评论 3 82
  • 工作流程 一次HTTP操作称为一个事务,其工作过程可分为四步: 1)首先客户机与服务器需要建立连接。只要单击某个超...
    保川阅读 4,649评论 2 14
  • 周六,看了将近一天的数学。 现在感觉好累 但是发现一个古风歌手 VK 声音好好听 我要加油,不过已经休息好久了 ,...
    为考研奔跑的中澳狗阅读 186评论 0 0