Web APIを使用しています。このフローは次のようになります:Passport + Express認証を使用しているときにブラウザにCookieが保存されていません
ユーザーはウェブサイトにログインします - >パスポートはユーザーを認証します - Passportはユーザーに関する情報を永続セッションに保存します - >ユーザーはセッションがある限りAPIにアクセスできます有効です。
残念ながら、私はPassportを取得して永続セッションを作成できません。ログイン部分が機能します(有効なユーザーのみが通過します)が、Passportはセッションに関する情報をクライアントのブラウザに保存しません。その結果、ユーザーはこの時点からAPIにアクセスすることはできません。
Server.js:
// call the packages we need
var express = require('express'); // call express
var app = express(); // define our app using express
var bodyParser = require('body-parser'); // for accesing data from POST requests
var passport = require('passport'); // for user authentication
var flash = require('connect-flash'); // for session management
var cookieParser = require('cookie-parser');// for reading cookies
// Setup the database connection
var configDB = require('./config/database.js');
var mongoose = require('mongoose');
mongoose.connect(configDB.url);
// Pull schema for training
var Training = require('./models/training');
// configure app
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
// required for passport
require('./config/passport')(passport); // pass passport for configuration
app.use(require('express-session')({
cookie : {
maxAge: 3600000, // see below
secure: false
},
secret: 'khugugjh',
resave: false,
saveUninitialized: true
})); // session secret
app.use(passport.initialize());
app.use(passport.session());
app.use(flash()); // use connect-flash for flash messages stored in session
...
routes.js:
...
// the login route
router.route('/login').post(
passport.authenticate('local-login'),
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
console.log('logged in: ' + req.user);
});
...
パスポートを次のように問題の外観に関連するコードの
パーツ.js:
...
// the serilization and deserilization functions for Passport
passport.serializeUser(function(user, done) {
console.log('Serialize: ' + user);
return done(null, user._id);
});
// used to deserialize the user
passport.deserializeUser(function(id, done) {
console.log('trying to des');
User.findById(id, function(err, user) {
console.log('Deserialize: ' + user);
return done(err, user);
});
});
...
あなたがローカルホストのような他のポートで実行されているすべてのフロントエンドのフレームワークを使用しています:3000 Expressのアプリとlocalhostです:1234は角アプリです –