#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 сейчас, и он исправлен, я думаю, забыл что-то добавить, спасибо за ответ, кстати!