Trouble running passport login Strategy. Authentication error~ TypeError: Cannot read property 'authenticate' of undefined
Trouble running passport login Strategy. Authentication error~ TypeError: Cannot read property 'authenticate' of undefined
我尝试过的事情
- Moving the authenticate directly into the server
- Uninstalling and reinstalling the following(as well as their corresponding types):
- passport
- passport-jwt
- passport-local
所有这些仍然导致收到以下错误消息:
“类型错误:无法读取未定义的属性 'authenticate'” ~使应用程序崩溃
代码
服务器文件
import * as express from "express";
import apiRouter from "./routes/index";
import * as passport from 'passport';
import * as PassportLocal from 'passport-local';
import './middleware/passport-stradegies';
const app = express();
app.use(passport.initialize());
app.use(express.static("public"));
app.use(express.json());
app.use(apiRouter);
const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Server listening on port: ${port}`));
护照登录码
import * as passport from 'passport';
import * as PassportLocal from 'passport-local';
import blogs from "../db/blogs";
import { compareHash } from "../utils";
passport.serializeUser((user, done)=> done(null, user));
passport.deserializeUser((user, done)=> done(null, user));
passport.use(new PassportLocal.Strategy({
usernameField: 'email'
},async (email, password, done) =>{
try {
const [userFound] = await blogs.find("email", email);
if (userFound && compareHash(password, userFound.userpassword)) {
done(null, userFound);
}else{
done(null, false);
}
} catch (error) {
done(error);
}
}))
登录/令牌创建页面
import * as express from "express";
// import * as jwt from 'jsonwebtoken';
import { authenticate } from 'passport';
import config from '../../config';
const router = express.Router();
router.post("/", authenticate('local'), async (req, res, next) => {
try {
// const token = jwt.sign({
// userid: userFound.id, email: userFound.email, role: 1},
// config.jwt.secret, {expiresIn: '15d'}
// );
// return res.json(token);
res.json('plz');
} catch (err) {
console.log(err);
res.status(500).json({ message: "My code login broke oops" });
}
});
export default router;
唯一的问题是护照更改了身份验证的导入方式
在login/token认证页面
更改导入:
// import { authenticate } from 'passport'; to
import * as passport from 'passport';
// then anywhere you use authenticate just use passport.authenticate
我尝试过的事情
- Moving the authenticate directly into the server
- Uninstalling and reinstalling the following(as well as their corresponding types):
- passport
- passport-jwt
- passport-local
所有这些仍然导致收到以下错误消息:
“类型错误:无法读取未定义的属性 'authenticate'” ~使应用程序崩溃
代码
服务器文件
import * as express from "express";
import apiRouter from "./routes/index";
import * as passport from 'passport';
import * as PassportLocal from 'passport-local';
import './middleware/passport-stradegies';
const app = express();
app.use(passport.initialize());
app.use(express.static("public"));
app.use(express.json());
app.use(apiRouter);
const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Server listening on port: ${port}`));
护照登录码
import * as passport from 'passport';
import * as PassportLocal from 'passport-local';
import blogs from "../db/blogs";
import { compareHash } from "../utils";
passport.serializeUser((user, done)=> done(null, user));
passport.deserializeUser((user, done)=> done(null, user));
passport.use(new PassportLocal.Strategy({
usernameField: 'email'
},async (email, password, done) =>{
try {
const [userFound] = await blogs.find("email", email);
if (userFound && compareHash(password, userFound.userpassword)) {
done(null, userFound);
}else{
done(null, false);
}
} catch (error) {
done(error);
}
}))
登录/令牌创建页面
import * as express from "express";
// import * as jwt from 'jsonwebtoken';
import { authenticate } from 'passport';
import config from '../../config';
const router = express.Router();
router.post("/", authenticate('local'), async (req, res, next) => {
try {
// const token = jwt.sign({
// userid: userFound.id, email: userFound.email, role: 1},
// config.jwt.secret, {expiresIn: '15d'}
// );
// return res.json(token);
res.json('plz');
} catch (err) {
console.log(err);
res.status(500).json({ message: "My code login broke oops" });
}
});
export default router;
唯一的问题是护照更改了身份验证的导入方式
在login/token认证页面
更改导入:
// import { authenticate } from 'passport'; to
import * as passport from 'passport';
// then anywhere you use authenticate just use passport.authenticate