Пользователь не авторизован после обновления веб-сайта пользователем

#node.js #passport.js

Вопрос:

Я создаю веб-сайт и использовал passport-discord для аутентификации, но когда пользователь аутентифицируется и обновляет веб-сайт, пользователь больше не аутентифицируется, и я не знаю, в чем проблема

 const DiscordStrategy = require("passport-discord").Strategy;
const passport = require("passport");
const fs = require("fs");
let users = require("../users.json");
let profiles = require("../profiles.json");

require("dotenv").config();

passport.serializeUser((user, done) => {
    done(null, user);
});
passport.deserializeUser(function(user, done) {
    done(null, user);
});

passport.use(new DiscordStrategy({
    clientID: process.env.CLIENT_ID,
    clientSecret: process.env.CLIENT_SECRET,
    callbackURL: process.env.CLIENT_REDIRECT,
    scope: ['identify', 'guilds']
}, 
(accessToken, refreshToken, profile, done) => {
    profiles[profile.id] = {
        username: profile.username,
        avatarURL: "https://cdn.discordapp.com/avatars/"   profile.id   "/"   profile.avatar,
        banner: "https://cdn.discordapp.com/banners/"   profile.id   "/"   profile.banner,
        guilds: profile.guilds,
        id: profile.id
    }   

    fs.writeFile("./profiles.json", JSON.stringify(profiles, null, 4), err => {
        if(err) throw err;
    })

    let finduser = profiles[profile.id];
    console.log(finduser);
    done(null, finduser);
}));
 

server.js файл:

 app.use(session({
    secret: 'secrettexthere',
    saveUninitialized: true,
    resave: true,
    cookie: {
        maxAge: 60000 * 60 * 24
    }
}))

app.use(passport.initialize());
app.use(passport.session());

app.get("/auth", passport.authenticate('discord'));
 

(я пока использую json)

Ответ №1:

Я не знаю паспортных разногласий, но, может быть, я смогу помочь. В соответствии с вашим поведением приложения может случиться так, что вы потеряете доступ при обновлении. Возможно, для этого и предназначен passport-discord, но, реализуя его вручную, вам придется сохранить свой доступ в локальном хранилище браузера и перезагрузить его оттуда при проверке авторизации.

Комментарии:

1. Я использовал MongoDB сейчас, и он исправлен, я думаю, забыл что-то добавить, спасибо за ответ, кстати!