Javascript 在passport身份验证和重定向方面遇到问题
我尝试了所有可能的方法,但肯定有一些我无法识别 index.js auth.js users.jsJavascript 在passport身份验证和重定向方面遇到问题,javascript,node.js,authentication,Javascript,Node.js,Authentication,我尝试了所有可能的方法,但肯定有一些我无法识别 index.js auth.js users.js 在此处输入代码 const express=require('express'); const router=express.router(); const User=require('../models/User'); const bcrypt=require('bcryptjs'); const ejs=require('ejs'); const passport=require(‘passp
在此处输入代码
const express=require('express');
const router=express.router();
const User=require('../models/User');
const bcrypt=require('bcryptjs');
const ejs=require('ejs');
const passport=require(‘passport’);
//登录页面
路由器.get('/login',(req,res)=>{
res.render(“登录”);
})
//注册页
路由器.get('/register',异步(req,res)=>{
res.render(“寄存器”);
})
//寄存器句柄
路由器.post('/register',(req,res)=>{
const{username,password}=req.body;
让错误=[];
//检查必填字段
如果(!用户名和密码){
错误。推送({msg:“请填写所有字段”})
}
//检查密码长度
if(password.length<6&&password>0){
错误。推送({msg:“密码应至少为6个字符”
})
}
如果(errors.length>0){
res.render('寄存器'{
错误,
用户名,
密码
},console.log(错误));
}否则{
//通过验证
User.findOne({username:username})
。然后(异步用户=>{
如果(用户){
//用户存在
错误。推送({msg:“用户名已被占用”
});
res.render('寄存器'{
错误,
用户名,
密码
});
}否则{
常量盐=等待B晶型盐(10);
const hashedPassword=等待
bcrypt.hash(密码,salt);
const newUser=新用户({
用户名:用户名,
密码:hashedPassword,
});
newUser.save()
。然后(用户=>{
//res.status(201).json(用户);
请求flash('success\u msg','您现在是
注册‘)
res.redirect('/users/login');
})
.catch(err=>console.log(err));
}
})
.catch(错误=>{
控制台日志(err);
})
}
});
//登录句柄
router.post(“/login”,
passport.authenticate('local'{
successRedirect:“/dashboard”,
failureRedirect:“/users/login”,
failureFlash:正确
})
);
//注销句柄
路由器.get('/logout',(req,res)=>{
请求注销();
请求闪存(“成功消息”,“您已注销”);
res.redirect('/users/login');
})
module.exports=路由器;
因此,这些代码正在工作,没有给出任何类型的错误,只是在登录后,在删除时它不会将我呈现到仪表板从router.get('/dashboard')中“EnsureReauthenticated”可以工作,但当它工作时,注销句柄不工作
const express = require('express');
const router = express.Router();
const { ensureAuthenticated } = require('../config/auth');
// Home Page
router.get('/', (req, res) => {
res.render('home');
});
//DashBoard
router.get('/dashboard', ensureAuthenticated, (req, res) => {
res.render('dashboard');
})
module.exports = router;
module.exports = {
ensureAuthenticated: function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
req.flash('error_msg', 'Please login first');
res.redirect('/users/login');
}
}
enter code here
const express = require('express');
const router = express.Router();
const User = require('../models/User');
const bcrypt = require('bcryptjs');
const ejs = require('ejs');
const passport = require('passport');
// Login Page
router.get('/login', (req, res) => {
res.render('login');
})
//Register Page
router.get('/register', async(req, res) => {
res.render('register');
})
// Register Handle
router.post('/register', (req, res) => {
const { username, password } = req.body;
let errors = [];
// Check required fields
if (!username && !password) {
errors.push({ msg: "Please fill all fields" })
}
// Check password length
if (password.length < 6 && password > 0) {
errors.push({ msg: "Password should be atleat 6 characters"
})
}
if (errors.length > 0) {
res.render('register', {
errors,
username,
password
}, console.log(errors));
} else {
// Validation passed
User.findOne({ username: username })
.then(async user => {
if (user) {
//User exists
errors.push({ msg: "username has already taken"
});
res.render('register', {
errors,
username,
password
});
} else {
const salt = await bcrypt.genSalt(10);
const hashedPassword = await
bcrypt.hash(password, salt);
const newUser = new User({
username: username,
password: hashedPassword,
});
newUser.save()
.then(user => {
// res.status(201).json(user);
req.flash('success_msg', 'You are now
registered')
res.redirect('/users/login');
})
.catch(err => console.log(err));
}
})
.catch(err => {
console.log(err);
})
}
});
// Login Handle
router.post('/login',
passport.authenticate('local', {
successRedirect: '/dashboard',
failureRedirect: '/users/login',
failureFlash: true
})
);
// Logout Handle
router.get('/logout', (req, res) => {
req.logout();
req.flash('success_msg', 'You are logged out');
res.redirect('/users/login');
})
module.exports = router;