首页 文章

错误返回值,Nodejs,JWT

提问于
浏览
0
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"  
        };
    }
}
  • TypeError:c:\ Users \ Hector \ Desktop \ Proyecto \ views \ index.jade:81
    79 | li 80 |
    a.text(href = '/acerca')Acerca

81 |如果是au.user 82 |李83 | a.text(href =“/ area”)# 84 | li无法读取eval上的未定义属性'user'(eval at(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的Object.exports.renderFile(c:\ Users \ Hector \ Desktop \ Proyecto \ node_modules \ jade \ lib \ index.js:380:38)处 . 在View.exports .__ express [作为引擎](c:\ Users \ Hector \ Desktop \ Proyecto)中的exports.renderFile(c:\ Users \ Hector \ Desktop \ Proyecto \ node_modules \ jade \ lib \ index.js:370:21) \ node_modules \ jade \ lib \ index.js:417:11)在tryRender上的View.render(c:\ Users \ Hector \ Desktop \ Proyecto \ node_modules \ express \ lib \ view.js:126:8)(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 \ n ode_modules \ express \ lib \ response.js:961:7)在C:\ Users \ Hector \ Desktop \ Proyecto \ app.js:167:6在Layer.handle [as handle_request](c:\ Users \ Hector \ Desktop \ Proyecto \ node_modules \ express \ lib \ router \ layer.js:95:5)at next(c:\ Users \ Hector \ Desktop \ Proyecto \ node_modules \ express \ lib \ router \ route.js:131:13)at at在Layer.handle上的Route.dispatch(c:\ Users \ Hector \ Desktop \ Proyecto \ node_modules \ express \ lib \ router \ route.js:112:3)[as 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

1 回答

  • 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返回错误或者解码后不包含必填字段,您可能需要进行一些错误处理 .

相关问题