CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

03 July, 2023

Client not receiving session data from server using Node, Passport JS, and cookie-session

 Programing Coderfunda     July 03, 2023     No comments   

so i've been using development servers this entire time, and everything's worked fine. Now, as I've deployed my client and backend, i'm running into an issue where my client cannot grab the sessional data from the cookie. i've checked both the backend and client cookies, and it seems like the session and session.sig are identical, so i don't know what's the deal... here's the relevant code: my backend: server.js: dotenv.config({ path: "./.env" }); const cookieKey = process.env.COOKIE_KEY; const express = require("express"); const cookieSession = require("cookie-session"); const connectDB = require("./config/db"); const passport = require("passport"); const PORT = process.env.PORT || 4500; const cors = require("cors"); connectDB(); const app = express(); //middleware app.use(express.json()); app.use( cors({ origin: true, // replace with your frontend domain credentials: true, }) ); app.use( cookieSession({ maxAge: 24 * 60 * 60 * 1000, // 1 day keys: [cookieKey], cookie: { secure: true, sameSite: "none", }, }) ); app.use(passport.initialize()); app.use(passport.session()); const authentication = require("./routes/Authentication.js"); app.use("/api/v1/auth", authentication); const tabs = require("./routes/Tabs.js"); // Adjust the path as necessary app.use("/api/v1/tabs", tabs); const preferences = require("./routes/Preferences.js"); app.use("/api/v1/preferences", preferences); const google = require("./routes/Google.js"); // Adjust the path as necessary app.use("/api/v1/google", google); app.listen(PORT, () => console.log("Server is connected")); authentication.js: dotenv.config({ path: "./.env" }); const sucessRedirectURL = process.env.SUCCESS_REDIRECT_URL; const express = require("express"); const passport = require("passport"); require("../services/Passport"); const router = express.Router(); router.get( "/google", passport.authenticate("google", { scope: ["profile", "email", "https://www.googleapis.com/auth/calendar"], accessType: "offline", approvalPrompt: "force", }) ); router.get( "/google/callback", passport.authenticate("google", { successRedirect: sucessRedirectURL, }) ); router.get("/me", (req, res) => { if (req.user) { res.send(req.user); } else { res.status(401).json({ message: "Not authenticated" }); } }); router.get("/logout", (req, res) => { console.log("logging out"); req.logout(); res.redirect("/"); }); module.exports = router; and my own service file, passport.js: dotenv.config({ path: "./.env" }); const googleClientID = process.env.GOOGLE_CLIENT_ID; const googleClientSecret = process.env.GOOGLE_CLIENT_SECRET; const backendAppURL = process.env.BACKEND_APP_URL; const passport = require("passport"); const GoogleStrategy = require("passport-google-oauth20"); const User = require("../models/User"); //when a user logs in, we get a 'user object' which is serialized to our session by storing a user's ID, //which is called automatically after logging passport.serializeUser((user, done) => { done(null, user.id); }); //now, when we want to take the data stored in our session, we use the ID to recreate the full user object on //each request, which is automatically done on each request passport.deserializeUser((id, done) => { User.findById(id).then((user) => { done(null, user); }); }); //this code happens first to find/create a user object passport.use( new GoogleStrategy( { clientID: googleClientID, clientSecret: googleClientSecret, callbackURL: backendAppURL + "/api/v1/auth/google/callback", //FULL CALLBACK URL IN PRODUCTION VS RELATIVE PATH IN DEVELOPMENT }, async (accessToken, refreshToken, profile, done) => { try { const existingUser = await User.findOneAndUpdate( { googleId: profile.id }, { accessToken, refreshToken, name: profile.displayName, avatarUrl: profile.picture, isVerified: profile.emails[0].verified, } ); if (existingUser) { console.log("Existing user found:", existingUser); return done(null, existingUser); } const user = await new User({ accessToken, refreshToken, name: profile.displayName, email: profile.emails[0].value, googleId: profile.id, avatarUrl: profile.picture, isVerified: profile.emails[0].verified, }).save(); console.log("New user saved:", user); done(null, user); } catch (error) { console.error("Error during authentication: ", error); done(error); } } ) ); here's the backend cookie:
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Sitaare Zameen Par Full Movie Review
     Here’s a  complete Vue.js tutorial for beginners to master level , structured in a progressive and simple way. It covers all essential topi...
  • AI foot tracking model
    I am a student doing a graduation project. I urgently need to deal with this model (I am attaching a link). I've never worked with pytho...
  • Laravel Search String
      Laravel Search String is a package by   Loris Leiva   that generates database queries based on one unique string using a simple and custom...
  • Writing and debugging Eloquent queries with Tinkerwell
    In this article, let's look into the options that you can use with Tinkerwell to write and debug Eloquent queries easier. The post Wr...
  • Laravel - Installation
    For managing dependencies, Laravel uses   composer . Make sure you have a Composer installed on your system before you install Laravel. In t...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (69)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • July (4)
  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

Loading...

Laravel News

Loading...

Copyright © CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda