2

我正在对需要认证的简单 API 使用本地护照策略。我在所有路由之前使用中间件,它处理对应用程序的访问

var verifyAuth = function(req, res, next) {
    if (req.originalUrl === '/signup' || req.originalUrl === '/login') {
        return next();
    }
    if (req.isAuthenticated()) {
        return next();
    }
    if (req.accepts('text/html')) {
        return res.redirect('/login');
    }
    if (req.accepts('application/json')) {
        res.set('WWW-Authenticate', '???');
        return res.status(401).send({err: 'User should be logged'});
    }
};
app.use(verifyAuth);
  1. 如果用户将订阅或登录,我允许访问这些路线
  2. 如果用户已登录,我允许访问
  3. 如果用户没有登录并且他在浏览器中(例如),我重定向到 /login
  4. 如果用户未登录并且他在其他设备中且 Accept Header = 'application/json',则应用程序返回 401

我读过使用 401,发送带有响应的 WWW-Authenticate 标头可能会很有趣。他们建议使用 Basic Auth 或 OAuth 作为值。我应该为本地策略使用哪个值?我认为发送带有登录网址的位置也会很有趣吗?

4

0 回答 0