【问题标题】:Error return value, Nodejs, JWT错误返回值,Nodejs,JWT
【发布时间】:2016-09-02 02:32:42
【问题描述】:
function isTokened(data) {
    var token = data;
    if(token != null || token != undefined){
        jwt.verify(token, app.get('userToken'), function(err, decoded) {        
            return {
                "user": decoded._doc.name,  
                "href": "/salir",
                "text": "Salir"
            };
        });
    }else{
        return {
            href: "/entrar",
            text: "Entrar"  
        };
    }
}
  1. 类型错误:c:\Users\Hector\Desktop\Proyecto\views\index.jade:81
    79|李80|
    a.text(href='/acerca') Acerca

    81|如果 au.user 82|李83| a.text(href="/area") #{au.user} 84|
    李 无法在 eval 中读取未定义的属性“用户”(在
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:218:8), :354:8) 在 eval (eval at
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:218:8), :453:22) 在exports.compile.res
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:219:38) 在 Object.exports.renderFile
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:380:38) 在 Object.exports.renderFile
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:370:21) 在 View.exports.__express [作为引擎]
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:417:11) 在 View.render
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\view.js:126:8) 在 tryRender
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\application.js:639:10) 在 EventEmitter.render
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\application.js:591:3) 在 ServerResponse.render
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\response.js:961:7) 在 c:\Users\Hector\Desktop\Proyecto\app.js:167:6 在 Layer.handle [作为句柄请求]
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\layer.js:95:5) 在下一个
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\route.js:131:13) 在 Route.dispatch
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [作为 handle_request]
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\layer.js:95:5) 在
    c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\index.js:277:22

【问题讨论】:

    标签: node.js return-value jwt


    【解决方案1】:

    jwt.verify 不是同步函数,因此您的函数最终退出而不返回任何内容。您需要使用回调方法来获取验证结果。你想要这样的东西:

    function isTokened(data, callback) {
        if(data){
            jwt.verify(data, app.get('userToken'), function(err, decoded) {        
                callback && callback({
                    "user": decoded._doc.name,  
                    "href": "/salir",
                    "text": "Salir"
                });
            });
        }else{
            callback && callback({
                href: "/entrar",
                text: "Entrar"  
            });
        }
    }
    

    如果 jwt.verify 返回错误或解码不包含必填字段,您可能需要进行一些错误处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 2021-09-12
      • 2018-03-10
      • 1970-01-01
      • 2019-01-21
      相关资源
      最近更新 更多