These are passport strategys. I think the problem is right here
`Здравствуйте, я пытался реализовать passport-jwt в моем веб-приложении. Но это не сработает. Я видел несколько одинаковых постов и пробовал то, что они делали, но в моем случае это не сработало.
Вот некоторые API-интерфейсы узла аутентификации с passport-jwt
локальная стратегия для паспорта не вызывается
Passport-jwt Unauthorized
Я пробовал их, но это не сработало. Вот мой код в моем passport.js`
import User from "../models/User";
import passport from 'passport';
const JWTSTrategy = require('passport-jwt').Strategy
import { ExtractJwt } from "passport-jwt";
const LocalStrategy = require('passport-local').Strategy;
const localLogin = new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
session: false,
}, async (email:any, password:any, done:any) => {
const user = await User.findOne({email: email})
if(!user) {
return done(null, false, { message: 'Not user found' })
} else {
const match = await user.matchPassword(password);
if(match) {
return done(null, user)
} else {
return done(null, false, { message: 'incorrect password' })
}
}
});
const loginJWT = new JWTSTrategy({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: `${process.env.TOKEN_SECRET}`
},
async (payload: any, done: any) => {
console.log(payload)
try {
const user = await User.findById({_id: payload._id});
if(!user) {
return done(null, false, { message: 'user not found' })
}
done(null, user)
} catch(err) {
done(err, false, { message: "something was wrong" })
}
}
)
passport.use(loginJWT); passport.use(localLogin);
export const authLocal = passport.authenticate('local', { session: false }); export const authJwt = passport.authenticate('jwt', { session: false });
Я думаю, что здесь что-то не так
это маршруты
import { Router } from "express"
import { registerUser, loginUser } from "../controllers/auth.control"
import post from "../controllers/post.control"
import verify from "../controllers/verify.control"
import verifyToken from "../middlewares/verify-token"
import { authJwt, authLocal } from "../middlewares/passport";
const router = Router()
router.route('/post')
.get(post)
router.route('/register')
.post(registerUser)
router.route('/login')
.post(loginUser)
router.route('/profile').get(authJwt,
function(req:any, res: any) {
res.send(req.user)
})
export default router