假设我有以下路线:
/admin
,/employer
,/jobs
,/jobs-view
,/companys
,/company-list
,/user-profile
。
受保护的路由:/admin
和/employer
。
公共路线:/jobs
,/jobs-view
,/companys
,/company-list
,/user-profile
。
在受保护的路由中,如果express-jwt
过期,则会从客户端调用刷新令牌
但是,在公共路线中,express-jwt
根本不进行检查。即使我处于活动状态并且正在浏览并且过期,但只有当我导航到受保护的路线时,系统才会注销,但导航到公共路线时不会检查。
所以我的问题是:是否有任何方法可以设置标头是否具有 bearer token ,然后将公用路由视为受保护的路由并检查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;
}
});
routes.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", ...);
我如何实现刷新令牌?