为什么通过链接打开的新标签页点击后无法在护照中进行身份验证?

我在身份验证方面遇到问题。我在节点中有一条路由,该路由根据用户通过护照登录时设置的cookie来检测谁是用户。

我正在发送一封欢迎电子邮件,告诉新用户如何访问该应用程序,并提供他们可以单击以转到首页的链接。电子邮件中的链接看起来与我插入的链接不同。当单击时,尽管它们将它们带到正确的域,所以我想电子邮件服务在幕后使用了某种重定向。

因此,一旦进入该应用程序,我就不得不使用嵌入的第三方来显示一项新的用户测试服务,该服务没有可供我使用的api。为了确保用户完成测试,在最后一个问题上放置了一个按钮,该按钮打开一个带有提供的URL的新选项卡,该URL用于在服务器上确认用户已完成测试。

是的,我完全知道那是多么令人费解。

问题似乎是用户登录时创建的cookie对新选项卡无效,并且服务器拒绝身份验证。 如果我直接在网址列中输入网址,而不是通过电子邮件生成所有内容的网址。有人可以向我解释这里可能会发生什么以及如何解决吗?

这是设置我的身份验证的方式:

//create db to store user sessions
var options = {
    host: config.db.host,port: 3306,user: config.db.username,password: config.db.password,database: config.db.database
};

var sessionStore = new MySQLStore(options);

//handles cookie/session creation
app.set('trust proxy',1); // trust first proxy
app.use(session({
    secret: config.sessionKey,resave: false,store:sessionStore,saveUninitialized: true,duration:365*24*60*60*1000,//1 year in milliseconds
    cookie: {
        secure: false,maxAge:365*24*60*60*1000 //1 year in milliseconds
}
}));
 app.use(passport.initialize());
 app.use(passport.session());
require('./services/passport');

身份验证路由仅询问用户是否已通过身份验证:

router.put('/auth',asyncMiddleware( async (req,res)=>{
    if (!req.isAuthenticated()){
        return res.status(403).send('Forbidden');
    }

    let user_id = req.user;

    let user = await db.user.findOne({
        where:{
            id : user_id
        }
    });
   return res.status(200).json({
        'message' : 'SUCCESS','user_id':user.id,'first_name' : user.first_name,'last_name' : user.last_name,'username' : user.username,'user_type' : user.permission_id,'user_status_id' : user.user_status_id,});
}));
MaiRongJian 回答:为什么通过链接打开的新标签页点击后无法在护照中进行身份验证?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3121569.html

大家都在问