范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

使用passport。js的googleauth2。0的JWT身份验证

  第 1 步: 创建您的初始node.js 应用程序并安装以下包,因为我们将在我们的项目中使用它 npm i express,jsonwebtoken,passport,passport-google-oauth20,dotenv
  第 2 步: 在 google developer console 中创建一个新项目并获取 google client id 和 secret。 将此配置添加到 .env 文件并添加 jwt 秘密,使用此命令创建一个随机秘密。 openssl rand -base64 32
  第 3 步: 在您的应用中创建文件 passport.js。 const passport = require("passport"); const GoogleStrategy = require("passport-google-oauth20").Strategy; const jwt = require("jsonwebtoken"); passport.use(   new GoogleStrategy(     {       clientID: process.env.GOOGLE_CLIENT_ID,       clientSecret: process.env.GOOGLE_CLIENT_SECRET,       callbackURL: "http://localhost:5000/api/auth/googleRedirect",     },     async function (accessToken, refreshToken, profile, done) {       return done(null, profile);     }   ) );
  第 4 步:创建 auth.route.js 文件 const jwt = require("jsonwebtoken"); const express = require("express"); const router = express.Router(); const passport = require("passport"); /* 这是用户单击 Google 登录按钮时将被重定向到的路由。*/ router.get(   "/login/google",   passport.authenticate("google", { scope: ["profile", "email"] }) );  // GOOGLE LOGIN CALLBACK router.get(   "/googleRedirect",   passport.authenticate("google"),   async (req, res) => {     console.log("req.user", req.body);     const users = {       firstName: req.user.displayName,       lastName: req.user.name.familyName,       email: req.user.emails[0].value,       imgURL: req.user.photos[0].value,       lastLogin: Date.now(),     };  /* 检查用户是否存在于数据库中的函数。 如果是,它返回用户。 如果没有,它会创建一个新用户。 */      await Users.findOne({ email: users.email }, async (err, user) => {       if (err) {         done(err, false, {           message: "Something went wrong with Google OAuth",         });       }       if (user) {         // 用户已经存在于我们的数据库中         console.debug("User already exists in our database");          // 更新上次登录时间戳         user.lastLogin = Date.now();          Users(user).save();         let token = jwt.sign(           {             data: users,           },           process.env.JWT_SECRET,           { expiresIn: "24h" }         ); // expiry in 24 hours         res.cookie("jwt", token);         res.redirect(process.env.CLIENT_AUTH_REDIRECT_URL);       } else {         Users(users).save();          let token = jwt.sign(           {             data: users,           },           process.env.JWT_SECRET,           { expiresIn: "24h" }         ); // expiry in 24 hours         res.cookie("jwt", token);          res.redirect(process.env.CLIENT_AUTH_REDIRECT_URL);       }     });    } );   module.exports = router;
  第 5 步: 创建一个中间件控制器来验证并从数据库中获取详细信息。 const jwt = require("jsonwebtoken"); const userModel = require("../model/user.model");   //获取当前用户详情的中间件 router.get("/current_user", verifyStudent, currentuser);  exports.verifyStudent = async (req, res, next) => {   const jwt_t = req.headers.cookie;   if (jwt_t) {     const token = jwt_t.split("=")[1].split(";")[0];      jwt.verify(token, process.env.JWT_SECRET, async (err, user) => {       if (err) {         return res.status(403).json("Token is not valid!");       }        const user = await userModel.findOne({ email: user.data.email });        if (!user) {         return res.status(403).json("User not found!");       }        req.user = user;       next();     });   } else {     return res.status(401).json("You are not authenticated!");   } };  exports.currentuser = async (req, res) => {   if (req.user) {     res.status(200).json({       message: "User is logged in successfully!",       success: true,       user: req.user,     });   } else {     res.status(401).json({       message: "Invalid user id!",       success: false,     });   } };

吾日三省(三)文章小计一篇,带来一些小思考。祝我们平日快乐今天有香客跟我说我觉得你活得很容易,也很坦然。我说容易么?我并不觉得。每个人其实都不容易,没有例外。尤其是当祸不单行的时候,简直能把人逼匈牙利不再被欧盟视为民主国?下一步或许被劝退?木叔这篇国际评论,来分析欧盟对匈牙利的态度。匈牙利这个国家有点意思,最近经常被欧盟点名除了在俄乌战争中和欧盟多数国家立场不太一致之外,匈牙利在法治和人权等问题的承诺上也让欧盟失望。从美制俄制到国产,志愿军遗骸乘运20回家,歼20双机空中护航在2014年,我国派出了首架前往韩国首尔仁川机场接运志愿军烈士遗骸的专机,当时我国动用的并不是来自空军部队的运输机,而是一架由中国货运航空提供的美制波音747全货机来完成志愿军遗骸低层次的人,总爱炫耀这4样东西天狂有雨,人狂有祸。层次越高的人,越低调层次越低的人,越喜欢炫耀。炫耀幸福西方人常说不要炫耀你的幸福,因为这会刺痛别人的眼。人类的悲欢并不相通,不是所有人都能对你的幸福感同身受。有新晋鬼畜顶流科目三,暴露了多少Z世代对科三考试的恐惧?头号周刊学车,是每个年轻人都要面对的一次人生试炼,只有考过了你才能拿到正规驾驶证,才能真正走上成为一名老司机的道路。可在你准备要成为老司机之前,你必须要面对的是史上最严最难的科目三衰落的俄罗斯军队,已经撑不起普京的野心这个世界真的是很反常。在俄乌开战之初,所以人都认为俄军会在战场上将乌克兰打的落花流水,然后在经济方面被西方制裁的奄奄一息但没曾想,半年时间过去,经济方面俄罗斯依然活蹦乱跳,却把西方媒体人青岛外援多普里斯已经开始隔离有望月底会合球队直播吧9月17日讯据媒体人所罗门的臣仆报道,青岛外援多普里斯已经成功入境并开始隔离,有望月底会合球队。所罗门的臣仆原文如下青岛男篮外援,拥有南苏丹和澳大利亚双重国籍的内线球员多普里家和万事兴黑塞说过一句富有哲理的话,有勇气承担命运这才是英雄好汉。这启发了我。家和万事兴的发生,到底需要如何做到,不家和万事兴的发生,又会如何产生。而这些并不是完全重要,更加重要的问题是,要自带财气的10种花,客厅一放特高档,寓意好,健康又好养在家里面种一些花草是非常有雅兴的事,美化家里面的环境,点缀我们的生活。有些寓意较好的花还可以有招财,旺财,保平安的作用,而这些花在花卉市场上也是比较受欢迎的。今天我就给大家带来十种月度经济观察8月全国服务业生产指数同比增长1。8央广网北京9月17日消息(记者唐婧)据中央广播电视总台经济之声天下财经报道,8月份,全国服务业生产指数同比增长1。8,增速水平比7月有所回升,现代服务业增长形势较好。国家统计局发布安徽女孩穿露脐装遭大妈质疑,你不穿都可以,网评手不能伸得太长衣服是我们每个人都用到的必需品,对于衣服的由来,各个地方都有不同的说法,但是很多说法都能追溯到远古时期,所以说,衣服陪伴人类有多久?这个问题已经是不言而喻。衣服网络图片关于衣服,西
大手笔!王晗签下CBA超级外援,山东队展露出来了争冠的决心作为CBA的一支劲旅,山东队在上赛季在最后时候才拿到一张季后赛的门票,在季后赛又早早被深圳队淘汰出局,无缘八强,这样的成绩,显然是不能够让球队满意。为了球队在成绩上有所突破,在这个罚球13中7后,德罗赞做了这样的事,他才是真正的科比门徒德马尔德罗赞成为了NBA历史上第50位得分超过20000分的球员,而这位公牛队球星在谈到自己所获得的迄今为止最伟大的职业成就之前,提到了他的导师和已故好友科比布莱恩特。德罗赞经常被中超联赛第24轮焦点战,涉及到争冠的分水岭中超第24轮的比赛从11月7号开始拉开战幕,本轮联赛涉及争冠的两场比赛(山东对阵上海申花,武汉三镇对阵北京国安),很有可能成为争冠分水岭之战。1先要说的是山东泰山对阵上海申花,上海摔角WWE选手中的那些意难平(2)书接上文,上一篇提到了个人觉得很可惜的三位选手,都是高飞选手。今天我来说说个人觉得挺可惜的三位偏力量型的选手。1韦德巴雷特韦德巴雷特要说才来WWE首秀就能看出巨星风采的选手,韦德巴冠军对冠军苏炳添9秒83超高步频,范志毅孟鹤堂纵跳实力惊人以热血拼搏精神传播体育,以冠军榜样力量砥砺人心,东方卫视全新升级竞技体育对抗节目冠军对冠军第二季已于上周五播出到第五期。节目迎来了打破百米短跑亚洲纪录的苏炳添和中国首位夺得世少赛男凭实力捡漏,创维酷开23。8寸显示器仅399元,100Hz刷新率办公真香家里的老显示器已经用了七八年了,最近终于黑屏不显示正式落幕了。那就要给自己新选择一款显示器,对于上班族而言,我的选择理念就是高性价比,注重实用性。最先想到的肯定是小米显示器,号称全缺爱的人该不该爱他缺爱的人有时很可爱,有时很无奈,他不知道该怎么去爱别人,自己一辈子都是浮云,看似轻松快乐,那只是给别人看的,独自面对生活,偶尔会感觉很无助。小果家里男女排行老四,他后面还有一个弟弟特斯拉机器人TeslaBot新技术亮相第五届进博会海报新闻记者于明效上海报道第五届进博会上,特斯拉惊艳全场亮出科技套装,不但首次在国内展台上排出S3XY全系车型,诠释出新能源汽车引领者的强劲产品掌控力,还将最新AI智能成果悉数释放风头被抢光了!宝马携4款纯电车BMWiFACTORY亮相进博会11月4日晚,第五届中国国际进口博览会在上海开幕。作为连续5年参展的跨国企业,宝马今年以纯电产品阵容亮相,包括创新BMWiX创新BMWi4以及BMW全球首款纯电动豪华旗舰轿车创新B华为P50跌至新低价,5nm芯片鸿蒙OS256GB,还支持IP68防水开头问大家一个问题?为什么某些华为手机在没有5G功能的前提下,销量却能遥遥领先某些5G手机?相信大部分的答案都是华为手机影响力强,品牌实力雄厚。华为手机的拍照强悍。笔者想说的是,这华为千元机华为畅享50P说起华为,大家一定是想到它的高端手机,但华为不止做高端机,也做中端机,今天我们就来介绍一款华为的千元机华为畅享50P。搭载骁龙680八核处理器,CPU由4个2。4GHzCortex