大津さん ありがとうございます。

指摘いただいた箇所を
    cookie: {
        httpOnly: false,
        // maxAge: new Date(Date.now() + 60 * 60 * 1000)
        maxAge: 60000
    }
としたところ、最ログイン可能となりました。
ありがとうございました。



2014年3月26日水曜日 11時06分44秒 UTC+9 shigeki:
>
> 大津です。 
>
> 環境がわからないので試せてないですが、 
>
>  >      cookie: { 
>  > 
>  >          httpOnly: false, 
>  > 
>  >          maxAge: new Date(Date.now() + 60 * 60 * 1000) 
>  > 
>  >      } 
>
> maxAgeは、expireと違ってクッキー生成後の有効時間(秒)を指定するものです。(RFC6265 5.2.2 参照) 
>
> 手元の express(3.5.1)で読み込んでる cookie(0.1.1) を見てみると、 maxAge - 0 で toNumber 
> しているので、 
> 1時間後の epoch 時間秒分だけクッキーが有効になっているのが原因じゃないかと想像します。 
>
>
> (2014/03/26 2:19), Leo Azuki wrote: 
> > passport.jsにて認証を実装しています。 
> > 
> > 認証してログインできるのですが、セッションがきれた後にログイン画面に強制的に戻り、そこで再度ログインしようとすると以下のようなエラーがでてしまい 
> > ます。 
> > 
> > csrfの設定が悪さをしているのかなと思ったのですが、最初のログイン時には問題なく動いています。 
> > 
> > 
> > 以下が設定です。 
> > 
> >   app.configure(function() { 
> > 
> >      app.set('port', process.env.PORT || 3000); 
> > 
> >      app.use(logger.log4js.connectLogger( 
> > 
> >          logger, 
> > 
> >          { level: logger.log4js.levels.INFO, 
> > 
> >              nolog: ["\\.css", "\\.js", "\\.jpg", "\\.jpeg", "\\.gif"] 
> > 
> >          }) 
> > 
> >      ); 
> > 
> >      app.use(express.logger('dev')); 
> > 
> >      app.use(express.limit('2mb')); 
> > 
> >      app.use(express.bodyParser({ 
> > 
> >          keepExtensions: true, 
> > 
> >          uploadDir: './uploads/fullsize' 
> > 
> >      })); 
> > 
> >      app.use(express.cookieParser()); 
> > 
> >      app.use(express.session({ 
> > 
> >      secret: 'abcde', 
> > 
> >      store: new MongoStore({ 
> > 
> >          db: 'session', 
> > 
> >          host: 'localhost', 
> > 
> >          clear_interval: 60 * 60 //セッションタイムアウトの時間を1時間に設定 
> > 
> >      }), 
> > 
> >      cookie: { 
> > 
> >          httpOnly: false, 
> > 
> >          maxAge: new Date(Date.now() + 60 * 60 * 1000) 
> > 
> >      } 
> > 
> >      })); 
> > 
> >      app.use(express.methodOverride()); 
> > 
> >      app.use(express.static(path.join(application_root, 'public'))); 
> > 
> >      app.use(express.favicon(path.join(application_root, 
> 'public/img/favicon.ico'))); 
> > 
> >      //passportのinitializeとsessionを使います。 
> > 
> >      app.use(passport.initialize()); 
> > 
> >      app.use(express.csrf()); 
> > 
> >      app.use(passport.session()); 
> > 
> >      app.use(flash()); 
> > 
> >      app.use(express.compress()); 
> > 
> >      app.use(app.router); 
> > 
> >      app.use(lib.notFoundHandler); 
> > 
> >      app.use(lib.errorHandler); 
> > 
> >   }); 
> > 
> > 
> > function csrf(req, res, next) { 
> > 
> >      res.cookie('XSRF-TOKEN', req.session._csrf); 
> > 
> >      res.locals.token = req.session._csrf; 
> > 
> >      next(); 
> > 
> > } 
> > 
> > 以下がそのエラーです。 
> > 
> > Forbidden: Forbidden 
> > 
> >      at next 
> (/Users/test/projects/myProjest/proto/node_modules/express/node_modules/connect/lib/proto.js:125:13)
>  
>
> > 
> >      at Object.handle 
> (/Users/test/projects/myProjest/proto/node_modules/express/node_modules/connect/lib/middleware/csrf.js:54:30)
>  
>
> > 
> >      at next 
> (/Users/test/projects/myProjest/proto/node_modules/express/node_modules/connect/lib/proto.js:199:15)
>  
>
> > 
> >      at Object.initialize [as handle] 
> (/Users/test/projects/myProjest/proto/node_modules/passport/lib/middleware/initialize.js:62:5)
>  
>
> > 
> >      at next 
> (/Users/test/projects/myProjest/proto/node_modules/express/node_modules/connect/lib/proto.js:199:15)
>  
>
> > 
> >      at Object.favicon [as handle] 
> (/Users/test/projects/myProjest/proto/node_modules/express/node_modules/connect/lib/middleware/favicon.js:78:7)
>  
>
> > 
> >      at next 
> (/Users/test/projects/myProjest/proto/node_modules/express/node_modules/connect/lib/proto.js:199:15)
>  
>
> > 
> >      at Object.static 
> (/Users/test/projects/myProjest/proto/node_modules/express/node_modules/connect/lib/middleware/static.js:55:61)
>  
>
> > 
> >      at next 
> (/Users/test/projects/myProjest/proto/node_modules/express/node_modules/connect/lib/proto.js:199:15)
>  
>
> > 
> >      at Object.methodOverride [as handle] 
> > 
> (/Users/test/projects/myProjest/proto/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:37:5)
>  
>
> > 
> > -- 
> > 
> > --- 
> > このメールは Google グループのグループ「Node.js 日本ユーザグループ」に登録しているユーザーに送られています。 
> > このグループから退会し、グループからのメールの配信を停止するには 
> > nodejs_jp+...@googlegroups.com<javascript:> 
> > <mailto:nodejs_jp+...@googlegroups.com <javascript:>> にメールを送信してください。 
> > その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。 
>
>

-- 

--- 
このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには nodejs_jp+unsubscr...@googlegroups.com 
にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。

Reply via email to