2017-03-29 29 views
0

我想發送的responseerror我KOA的應用程序時,有沒有sessionId。我探討,但沒有得到任何有用的爲我做的一樣。我也用return ctx.throw(401);unauthorized,但是這是不好的,ctx.throw(401);只需發送「未經授權」,我想添加一些特定的信息,並添加只是發送到客戶端的響應後。 任何人都可以建議我該怎麼做?什麼是更換快遞的res.send的({用戶:「某某」});或在koa res.end()?

我的代碼是:

index.validateKey = async (ctx, next) => { 
    await new Promise((resolve, reject) => { 
     var authorized = ctx.headers.sessionid ? true : false; 
     if (!authorized) { 
      return ctx.throw(401); //HERE , I want to send . 
     } 
     resolve(); 
    }); 
    await next(); 
} 
+0

爲什麼在沒有異步調用時使用異步? –

回答

0

您可以同步檢查的sessionId所以沒有異步等待需要的功能。 你的中間件功能可以是這樣的。

async(ctx, next) => { 
    var authorized = ctx.headers.sessionid ? true : false; 
    if (!authorized) { 
     return ctx.throw('session Id required', 401);; 
     /*HERE , You can send custom message and return.*/ 
    } 
    /* call next middleware else*/ 
    await next(); 
}) 
+0

由於阿赫亞,但我可以在ctx.thwor發送的對象()? –

+0

koa js使用https://github.com/jshttp/http-errors生成錯誤,其中明確指出**消息 - 傳統的錯誤消息,該消息應該保持簡短並且所有單行**因此您在此處有兩個選項,您可以在上述方法中將對象串化併發送。或'ctx.throw(401,「Errorstring,則」,{錯誤:「對象」});'然後捉錯誤對象在KOA的單嘗試捕捉並採取相應措施。 –

相關問題