博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(一)HTTPAuth: Node.js 使用 Koa 的 HTTP BasicAuth 基本认证
阅读量:6899 次
发布时间:2019-06-27

本文共 1527 字,大约阅读时间需要 5 分钟。

要点:

  • 不要通过 form 提交表单的默认方式发送请求,转而使用 fetch 或 ajax
  • 客户端注意设置 Authorization 字段的值为 'Basic xxx',通过该 Http 字段传递用户名密码
  • base64 的方法在客户端要注意兼容性 btoa ,建议使用现成的库如 'js-base64' 等,NodeJS 方面使用全局的 Buffer
  • 服务端验证失败后,注意返回 401,但不用返回 'WWW-Authenticate: Basic realm="..."' 避免浏览器出现弹窗
  
AMD
require.config({  baseUrl: 'js/libs',  paths: {    'zepto': 'zepto.min',  },  shim: {    'zepto': 'zepto',  }});define(['zepto'], function ($) {  let $form = $('#form')  $form.on('submit', (e) => {    e.preventDefault()    $.ajax({      // ajax 发送验证请求      type: 'POST',      url: '/login',      headers: {        'Content-Type': 'application/x-www-form-urlencoded',        'Authorization': 'Basic ' + btoa($('#username').val() + ':' + $('#password').val()),        // 通过 Authorization 传递 base64 编码后的用户名密码      },      success: function (data) {        console.dir(data) // 回调      }    })  })});
const Koa = require('koa')const static = require('koa-static')const router = require('koa-better-router')().loadMethods()const koaBody = require('koa-body')const app = new Koa()app.use(koaBody())app.use(router.middleware())app.use(static('public'))app.listen(8080)router.post('/login', (ctx, next) => {  // 省略从数据库中提取用户密码  if (ctx.get('Authorization') === 'Basic ' + Buffer('fdsa:fdsa').toString('base64')) {    // 获取 Authorization 字段 比对 base64 用户名密码    ctx.body = 'secret'    ctx.type = 'text/html'    ctx.status = 200 // 匹配成功  } else {    ctx.status = 401 // 匹配失败  }  next()})

转载地址:http://lfcdl.baihongyu.com/

你可能感兴趣的文章
three.js性能优化
查看>>
Choerodon如何进行日志收集与告警
查看>>
Vue篇之vue 使用Jade模板写html,stylus写css
查看>>
spring web 项目启动过程分析
查看>>
《HelloGitHub》第 36 期
查看>>
裂变活动成功的前提:回报大于付出
查看>>
深入解析ES6中let和闭包
查看>>
短视频APP开发应该注意些什么
查看>>
springmvc dubbo整合cms内容发布平台
查看>>
让字符码跟着迈克杰克逊一起舞蹈,致敬天王经典舞蹈
查看>>
java B2B2C 仿淘宝电子商城系统-服务网关zuul初级篇
查看>>
Vue响应式原理-理解Observer、Dep、Watcher
查看>>
几个简单又实用的配色技巧
查看>>
最新Python学习教程_Python学习视频_Python学习路线:手把手教你用Python做数据分析...
查看>>
强大的代码保护软件 .NET Reactor使用教程(三):.Net Reactor应用场景
查看>>
人工智能创业项目,创业服务资源渠道
查看>>
iOS使用SQLCipher加密数据库
查看>>
喜讯不断,BCH又迎来两个代币发行方案
查看>>
阿里云DMS发布数据库网关服务: 打通网络限制 开启数据库统一管理的万能钥匙...
查看>>
matlab将M文件直接编译为可独立使用的EXE可执行文件
查看>>