我正在对需要认证的简单 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);
- 如果用户将订阅或登录,我允许访问这些路线
- 如果用户已登录,我允许访问
- 如果用户没有登录并且他在浏览器中(例如),我重定向到 /login
- 如果用户未登录并且他在其他设备中且 Accept Header = 'application/json',则应用程序返回 401
我读过使用 401,发送带有响应的 WWW-Authenticate 标头可能会很有趣。他们建议使用 Basic Auth 或 OAuth 作为值。我应该为本地策略使用哪个值?我认为发送带有登录网址的位置也会很有趣吗?