I am using js passport to register. When a new user logs into a cookie, it is created (configured by me) in a browser that contains a unique DB key.
So how the program works:
If a new user registers a cookie, this function is created.
function setCookie(cname,cvalue,exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
then the data entered on the login page is sent to the post-function on the server (passport js).
The local strategy authentication code is shown below (the same goes for guest, fb, etc.)
passport.use('guest',new LocalStrategy(
function(username,password,done){
User.getUserBycookie(password, function(err, user){
if(err) throw err;
if(user){
user.save()
}
else{
console.log("some problem with updating guest user by db id!");
}
});
return done(null, user);
}
else {
var newUser = new User();
newUser.guest.cookie = newUser._id;
trophytable_id = newUser._id;
newUser.guest.name = username;
newUser.save(function(err){
if(err) throw err;
return done(null, newUser);
});
}});}));
The js passport automatically authenticates information using the strategies local, guest, facebook, twitter, etc., if it is correct, a session is created .
, , cookie , DB.
, , (mongodb) .
, , , . , .
function ensureAuthenticated(req, res, next){
console.log("Inside ensureAuthenticated...............");
if(req.isAuthenticated()){
console.log("Inside if part of ensureAuthenticated-------");
console.log(req.cookies);
return next();
} else {
console.log("Inside else part of ensureAuthenticated----------");
console.log(req.cookies.user_id);
if(isEmpty(req.cookies.user_id)){
console.log("user_id == undefined");
res.redirect('/users/login');
}
else{
console.log("user_id defined");
return next();
}
}
}
next() :
router.get('/',ensureAuthenticated, function(req,res){
console.log("Inside router get ensure authenticated--------------------");
if(isEmpty(req.session.passport)){
User.getUserBydbid(req.cookies.user_id, function(err, user){
if(err) throw err;
if(user){
if(!isEmpty(user.local)){
}else if(!isEmpty(user.guest)){
}
}
else console.log("*********some problem in finding getUserBydbid");
});
}
else{
res.render('index',{userid:req.session.passport.user});
}});
?