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

  • Laravel DynamoDB Eloquent Models and Query Builder
    Laravel   DynamoDB   is a DynamoDB-based Eloquent model and Query builder for Laravel. Using the provided Dynamo driver, models extend the E...
  • There are two solutions for one board, using different chips. But one of their i2c address is the same. How to resolve conflict in one dts?
    Two chips A and B conflict with 0x62 on i2c bus 10. If A@62 and B@62 are configured on dts, Linux loads the driver of A. If B@62 is in front...
  • Unable to install pyocd in latest version of Anaconda
    I'm trying to set up our usual Anaconda development environment on a new Windows 10 PC. I downloaded the latest version of Anaconda last...
  • Campfire Coders (The post-Laracon-'24 recap episode!)
    submitted by /u/JerseyMilker [link] [comments]
  • Multidimensional array searching to return key if value found
    <? Multidimensional  array  searching to  return  key  if  value found I need to pass in a name to a search  function   on  an  array .  ...

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