使用nodejs和passportjs的身份验证路由错误

时间:2020-03-27 08:13:29

标签: node.js express jwt passport.js

我在nodejs express中使用passportjs和jwt进行身份验证。但是,当请求在auth路由中发送时,它将以内部错误进行响应。

passport.js

dep1 <- as.data.frame(matrix(0, ncol = 4, nrow = 8))
setnames(dep1, c("V1", "V2", "V3", "V4"), c("wait", "check", "stay", "symp"))
setDT(dep1, keep.rownames = "id")[]
dep1$wait <- 1
dep1[c(1:7), "check"] = 1
dep1[c(1:6), "stay"] = 1
dep1[, symp:=as.character(symp)]
dep1[c(1:3), "symp"] = "cond1"
dep1[c(4:5), "symp"] = "cond2"
dep1[c(6), "symp"] = "cond3"
dep1[c(7:8), "symp"] = "clear"
dep1

   id wait check stay  symp
1:  1    1     1    1 cond1
2:  2    1     1    1 cond1
3:  3    1     1    1 cond1
4:  4    1     1    1 cond2
5:  5    1     1    1 cond2
6:  6    1     1    1 cond3
7:  7    1     1    0 clear
8:  8    1     0    0 clear

server.js

require("custom-env").env();
const JwtStrategy = require("passport-jwt").Strategy;
const ExtractJwt = require("passport-jwt").ExtractJwt;
const User = require("../model/model");

const opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = process.env.ACCESS_TOKEN_SECRET;

console.log(opts);
module.exports = passport => {
    passport.use(
        new JwtStrategy(opts, (jwt_payload, done) => {
            console.log("testsssss", jwt_payload);
            return done(null, jwt_payload);

        })
    );
};

routes.js

require("custom-env").env();
const express = require("express");

const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const passport = require("passport");
const cors = require("cors");
const app = express();

let port = process.env.PORT;
app.use(bodyParser.json());

mongoose.connect(process.env.MONGODB_URL);

let db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error:"));
db.once("open", () => {
    console.log("Mongoose connection success ");
});

const routes = require("./routes");
// Enable CORS - Cross Origin Resource Sharing
app.use(cors());

require("./config/passport")(passport);

app.use("/", passport.authenticate("jwt", { session: false }, routes));

app.listen(port, () => {
    console.log("comments and reminders server running in port : ", port);
});

错误

TypeError:无法读取未定义的属性“ apply” 在/home/supun/gitrepos/360/comments-and-reminders/node_modules/express/lib/router/index.js:635:15 在下一个(/home/supun/gitrepos/360/comments-and-reminders/node_modules/express/lib/router/index.js:210:14) 在Function.handle(/home/supun/gitrepos/360/comments-and-reminders/node_modules/express/lib/router/index.js:174:3) 在路由器上(/home/supun/gitrepos/360/comments-and-reminders/node_modules/express/lib/router/index.js:47:12) 在JwtStrategy.strategy.error(/home/supun/gitrepos/360/comments-and-reminders/node_modules/passport/lib/middleware/authenticate.js:358:18) 在/home/supun/gitrepos/360/comments-and-reminders/node_modules/passport-jwt/lib/strategy.js:126:30 在/home/supun/gitrepos/360/comments-and-reminders/node_modules/jsonwebtoken/verify.js:223:12 在getSecret(/home/supun/gitrepos/360/comments-and-reminders/node_modules/jsonwebtoken/verify.js:90:14) 在Object.module.exports [作为验证](/home/supun/gitrepos/360/comments-and-reminders/node_modules/jsonwebtoken/verify.js:94:10) 在Function.module.exports [作为JwtVerifier](/home/supun/gitrepos/360/comments-and-reminders/node_modules/passport-jwt/lib/verify_jwt.js:4:16)中 在/home/supun/gitrepos/360/comments-and-reminders/node_modules/passport-jwt/lib/strategy.js:104:25 在JwtStrategy._secretOrKeyProvider(/home/supun/gitrepos/360/comments-and-reminders/node_modules/passport-jwt/lib/strategy.js:40:13) 在JwtStrategy.authenticate(/home/supun/gitrepos/360/comments-and-reminders/node_modules/passport-jwt/lib/strategy.js:99:10) 尝试(/home/supun/gitrepos/360/comments-and-minders/node_modules/passport/lib/middleware/authenticate.js:366:16) 在验证(/home/supun/gitrepos/360/comments-and-minder/node_modules/passport/lib/middleware/authenticate.js:367:7) 在Layer.handle [作为handle_request](/home/supun/gitrepos/360/comments-and-reminders/node_modules/express/lib/router/layer.js:95:5)

0 个答案:

没有答案