Za pomocą express.Router Próbuję utworzyć oprogramowanie pośrednie dla określonego routera w mojej aplikacji, który utworzy sesję i zarządza nią. To nie działa, jeśli sesja client-sessions
nie jest wywoływany bezpośrednio przez Router().use
. ZA undefined
występuje błąd nazwy sesji.
Pomysł (nie działa)
auth.routes.js
import {Router} from "express";
import session from "client-sessions";
import authMiddleware from "./auth.middleware";
import authService from "./auth.service";
export default () => {
const router = Router();
router.use(authMiddleware.createCookie);
router.use(authMiddleware.authenticate);
return router;
};
auth.middleware.js
class authMiddleware {
static createCookie(req, res, next) {
session({
cookieName: "authenticated",
secret: "random_string_goes_here",
duration: 30 * 60 * 1000,
activeDuration: 5 * 60 * 1000
});
next();
}
static authenticate(req, res, next) {
if (req.authenticated) {
// Check and redirect
} else {
req.authenticated.login = false;
}
next();
}
}
export default authMiddleware;
Wersja robocza
Zmienianie createCookie
wezwanie do bezpośredniego utworzenia pliku cookie powoduje powyższe działa tak:
auth.routes.js
`
router.use(
session({
cookieName: "authenticated",
secret: "random_string_goes_here",
duration: 30 * 60 * 1000,
activeDuration: 5 * 60 * 1000
})
);
`
Jestem całkiem nowy w Node.js, więc jakieś pomysły, jak ten pomysł może działać, czy po prostu czegoś mi brakuje?
Odpowiedzi:
0 dla odpowiedzi № 1Wystąpił niezdefiniowany błąd nazwy sesji.
Mam na myśli, że muszę zapytać, ale zaimportowałeś client-sessions
biblioteka w auth.middleware.js
dobrze?