Предположим, у меня есть следующие маршруты:
/admin
, /employer
, /jobs
, /jobs-view
, /companys
, /company-list
, /user-profile
.
защищенмаршруты: /admin
и /employer
.
публичные маршруты: /jobs
, /jobs-view
, /companys
, /company-list
, /user-profile
.
На защищенных маршрутах, еслиexpress-jwt
истекает, токен обновления вызывается со стороны клиента
Однако в публичных маршрутах express-jwt
вообще не проверяет.Несмотря на то, что я активен и просматриваю, а когда он истекает, система выходит из системы, только если я перехожу на защищенный маршрут , но не проверяет при переходе к общедоступному.
ТакМой вопрос здесь: есть ли способ установить, если в заголовке есть токен-носитель , тогда рассматривать открытый маршрут как защищенные маршруты и проверять срок действия jwt?
Потому что, если пользователь вошел в системузатем токен на предъявителя добавляется ко всем защищенным и общедоступным маршрутам.
auth.js
:
let jwt = require("express-jwt");
let config = require("../config/jwt");
module.exports = jwt({
secret: config.jwtSecret,
requestProperty: "payload",
getToken: req => {
if (
req.headers.authorization &&
req.headers.authorization.split(" ")[0] == "Bearer"
) {
return req.headers.authorization.split(" ")[1];
} else if (req.query && req.query.token) {
return req.query.token;
}
return null;
}
});
rout.js:
let auth = require("./auth");
app.use("/admin", auth, ...);
app.use("/employer", auth, ...);
app.use("/jobs", ...);
app.use("/jobs-view", ...);
app.use("/companys", ...);
app.use("/company-lis", ...);
app.use("/user-profile", ...);
Как реализовать токен обновления?
Я использовал ngx-auth .Он обнаруживает неудачный запрос из-за неудачной аутентификации.Для получения дополнительной информации проверьте здесь