首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过koa提供静态文件并使用basic auth

通过koa提供静态文件并使用basic auth
EN

Stack Overflow用户
提问于 2015-10-30 10:27:22
回答 1查看 865关注 0票数 0

我用Koa构建了一个小型测试服务器。它应该为生活在同一个目录(和子目录)中的所有文件提供服务,但是需要使用基本的auth进行身份验证。因此,我使用的包是koa-静态 & koa-基本数据

我不知道如何把两种中间件结合起来?当使用:app.use(function *() { });时,需要使用this.body = 'text'而不是使用koa-static

这是完整的代码:

代码语言:javascript
复制
"use strict";

var koa   = require('koa')
  , serve = require('koa-static')
  , auth  = require('koa-basic-auth');

var app = koa();

// Default configuration
let port = 3000;

app.use(function *(next){
    try {
      yield next;
    } catch (err) {
      if (401 == err.status) {
        this.status = 401;
        this.set('WWW-Authenticate', 'Basic');
        this.body = 'Access denied';
      } else {
        throw err;
      }
    }
  });


// Require auth
app.use(auth({ name: 'admin' , pass: 'admin'}))

//Serve static files
//DOESN'T WORK
app.use(function *() {
  serve('.')
});

// WORKS
app.use(function *(){
  this.body = 'secret';
});

app.listen(port);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-30 11:25:01

yield 必须有才能对中间件进行包装:

代码语言:javascript
复制
app.use(function *() {
  yield serve('.')
});

或直接使用没有包装器功能的中间件:

代码语言:javascript
复制
app.use(serve('.'));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33433785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档