Я пытаюсь сделать функциональность входа/выхода из двух категорий, admin
& employee
.
И при использовании app.use(session())
сеанс будет доступен для каждого маршрута. И это здорово. Но когда я хочу выйти из системы, скажем, администратор использует req.session.destroy()
. Он выходит из системы, но весь сеанс исчез, включая администратора и сотрудника. И это не я хочу. Я хочу уничтожить только сеанс, связанный с администратором, для выхода администратора и сеанс, связанный с сотрудником, для выхода сотрудника. Итак, как я могу это сделать?
И я новичок в аутентификации и авторизации. Дайте мне знать, как лучше всего использовать сеансы, или лучше использовать JWT или что-то еще, что поможет мне лучше справляться с этим.
Для этого связанного вопроса.
мой app.js
// session
app.use(
session({
secret: process.env.SECRET,
resave: false,
saveUninitialized: false,
store,
cookie: {
maxAge: 20000,
secure: false,
},
})
);
app.use("/api/admin", adminRoutes);
app.use("/api/employee", employeeRoutes);
app.get("/api", (req, res) => {
res.send("Api is running");
});
и при api/admin/login
вызове маршрута вызывается этот контроллер,
const adminLoginController = asyncHandler(async (req, res) => {
console.log("I ran");
const { pass } = req.body;
if (someDBCheckHere) {
req.session.adminAuthenticated = true;
req.session.admin = { pass: pass };
res.send("success");
} else {
res.status(401).send({ message: "Login Failed" });
console.log("failure");
}
});
Решение проблемы
Я не совсем понимаю, зачем вам уничтожать сессию. Вы где-то читали, что вам говорят так делать?
Итак, по поведению вы можете видеть, что сеанс предназначен для жизни, а не для уничтожения: D
Чтобы «выйти из системы» пользователя, вы просто устанавливаете для файла cookie дату истечения срока действия.
Комментариев нет:
Отправить комментарий