我正在学习Passportjs,并且我的server.js中包含以下代码,我面临的问题是,以下代码中的passport.use('local',new LocalStrategy({})
从未被调用,其余的都可以正常工作,除了localstrategy之外,挣扎了好几个小时!
我正在学习Passportjs,并且我的server.js中包含以下代码,我面临的问题是,以下代码中的passport.use('local',new LocalStrategy({})
从未被调用,其余的都可以正常工作,除了localstrategy之外,挣扎了好几个小时!
const express=require("express");
const bodyParser=require('body-parser');
const ejs=require("ejs");
const cookieParser=require('cookie-parser');
const passport=require('passport');
const LocalStrategy=require('passport-local').Strategy;
const session=require("express-session");
const app=express();
app.set(express.static,'public');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(session({secret:'library'}));
app.use(passport.initialize());
app.use(passport.session());
app.post('/auth/signUp',(req,res,next)=>{
console.log('body',req.body)
passport.authenticate('local',(err,user,info)=>{
console.log("whattt",user)
req.login(user,(err)=>{
res.redirect('/auth/profile');
});
})(req, res, next);
});
app.get('/auth/profile',(req,res)=>{
res.json(req.user);
});
app.get("/",async (req,res)=>{
res.render('index.ejs');
});
passport.serializeUser((user,done)=>{
done(null,user.id);
});
passport.deserializeUser((id, done)=> {
console.log("id",id);
let data=[{id:1,name:"malouda"},{id:2,name:"Jason"}];
let user = data.find((obj)=>{ return obj.id === id; });
done(null,user);
});
passport.use('local',new LocalStrategy({
usernameField: 'username',
passwordField: 'password'
},(username,password,done)=>{
user={id:1,name:"malouda"};
console.log("LocalStrategy")
done(null,user);
}));
app.listen(3000,()=>{
console.log("Listening on port 6000");
});
在我的index.js中,我具有以下格式
<form name="signUpForm" action="/auth/signUp" method="post" multipart='urlencoded'>
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" name="username" id="username" placeholder="Username">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" name="password " id="exampleInputPassword1" placeholder="Password">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
答案 0 :(得分:0)
Passport LocalStrategy用于登录身份验证。
在注册时,您不需要护照。在注册中,您只需将用户存储在数据库中即可创建该用户。
您需要添加
Passport.authenticate(`local`, (err, user, info) => {}
在您的登录 API中以验证用户身份。
顾名思义, Passport.authenticate 对用户凭据进行身份验证。所以首先您需要创建用户。
希望我清除了您的想法。