可能是由于未正确设置护符令牌(Bearer Token)所导致的身份验证失败。检查请求头是否包含正确格式的Bearer Token。如果令牌是从存储在客户端cookie中的Bearer Token中提取出来的,请确认客户端已正确设置Cookie,并且令牌是从Cookie中提取的。如果Cookie未被正确设置,则应通过设置响应头中的Set-Cookie头来设置Cookie。
以下示例代码演示如何在Node.js中使用Express和Passport身份验证设置和验证应用程序使用Bearer Token的Cookie:
const express = require('express');
const passport = require('passport');
const BearerStrategy = require('passport-http-bearer').Strategy;
const app = express();
app.use(passport.initialize());
// Set up passport authorization with Bearer Strategy
passport.use(new BearerStrategy(
function(token, done) {
// Verify token to authenticate user
if (token !== 'secretToken') {
return done(null, false);
}
return done(null, 'user');
}
));
// Set cookie and return bearer token to client
app.get('/login', (req, res) => {
res.cookie('BearerToken', 'secretToken');
res.send({ token: 'secretToken' });
});
// Use BearerStrategy to authenticate requests
app.get('/protected', passport.authenticate('bearer', { session: false }), (req, res) => {
res.send({ message: 'You are authenticated!' });
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});