私は立ち往生しています。
Passport を使用した Featherjs は、ローカル戦略で認証し、セッションを有効にできませんか?
セッションを有効にすると、最初のリクエストは承認されませんが、2 番目のリクエストは最初のリクエストの Cookie が使用されるためです。Cookie を使用したくありません。
私は自分のコードを次のようにセットアップしました:
var hooks = require('feathers-hooks');
var bodyParser = require('body-parser');
var session = require('express-session');
var passport = require('passport');
var feathers = require('feathers');
var feathersPassport = require('feathers-passport');
var LocalStrategy = require('passport-local').Strategy;
var app = feathers();
var LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(function (username, password, done) {
done(null, "userid here");
}));
//Use the id to serialize the user
passport.serializeUser(function (user, done) {
done(null, user);
});
// Deserialize the user retrieving it form the user service
passport.deserializeUser(function (id, done) {
done(null, "userid here");
});
var myService = {
find: function (params, callback) {
if (params.user) {
console.log('yeh');
}
else {
callback('not authorized', null);
}
}
};
// A shared session store must be provided.
//TODO This MemoryStore is not recommended for production
var store = new session.MemoryStore();
// Initialize the application
app.configure(feathers.rest())
.configure(hooks())
.configure(feathersPassport({
secret: 'feathers-rocks',
store: store
}));
app.use(bodyParser.urlencoded({extended: true}));
app.use('/should/be/protected', passport.authenticate('local', {session: true}), myService);
app.listen(4000);