0

ノードjsでjwtトークン生成を実装しようとしました.jwtトークンを取得しましたが、ノードjs crud操作を使用してトークンを検証する方法.しかし、コールバック関数を使用してトークンjwt verfiyコードを取得しました.非同期/ awit関数を実装するために使用されるコールバック関数なし.

index.js

router.post('/', async (req, res) => {
    (async function() {
        try {
          await client.connect();
          console.log("Connected correctly to server");
          const db = client.db('olc_prod_db');

          //Validation
          const { error } = validate.validate(req.body);
          if (error)
          {
            return res.status(400).send(error.details[0].message);
          }
          else
          {
            const check_login = req.body
            const r = await db.collection('UserRegistration').find().toArray();
            r.forEach(element => {
                if(element['username'] == check_login['username'])
                {
                    const token = get_token.validate(req.body)
                    res.send({"token ":token})
                }
                else 
                {
                    return res.send(401,"Un Authorized");
                }
            });

          }
          client.close();
        } catch(err) {
          console.log(err.stack);
        }
      })();

  });

authtoken.js

var jwt = require('jsonwebtoken')
function get_token(userdata)
{

    var accessToken = jwt.sign(userdata, 'secretkey', {
        //Set the expiration
        expiresIn: 3600 //we are setting the expiration time of 1 hr. 
    });
    //send the response to the caller with the accesstoken and data
    console.log('Authentication is done successfully.....');
    return accessToken

}





exports.validate = get_token;
4

2 に答える 2

1
const CONST = require('../../config')
exports.validJWTNeeded = (req, res, next) => {
    if (req.headers['authorization']) {
        try {
            let authorization = req.headers['authorization'].split(' ');
            if (authorization[0] !== 'Bearer') {
                return res.status(401).send('invalid request'); //invalid request
            } else {
                req.jwt = jwt.verify(authorization[1], CONST.SECRET);
                return next();
            }
        } catch (err) {
            return res.status(403).send(); //invalid token
        }
    } else {
        return res.status(401).send('invalid request');
    }
}
于 2019-10-31T04:31:55.640 に答える