express-jwt:验证请求标头是否具有承载令牌

时间:2018-12-16 06:19:19

标签: jwt refresh-token express-jwt

假设我有以下路线:

/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", ...);

我如何实现刷新令牌?

我用过ngx-auth。它检测到由于身份验证失败而导致的请求失败。有关更多信息,请检查here

0 个答案:

没有答案