2017-08-17 5 views
1

私はエクスプレスアプリを構築しようとしていますが、今はログインプロセスに苦しんでいます。私はそれが私が持っている問題とは何の関係もないとは思っていませんが、学校の授業では、passport.jsを使ってログインフォームを作成しなければならないと言いました。Express.jsとpassport.jsはアクセスできますが、ログインすることはできません

だから、私がいる問題は、私はローカルホスト上の私のブラウザで私のページをレンダリングしようとすること毎回です:3000 /私はこのメッセージを取得ログイン:

CANNOT GET /login 

は私でさえ多くの問題は、おそらくあります。私はすでにこのエラーが発生しているので、それを見つけることは不可能です。

私のデフォルトのアプリのファイル:

const express = require('express'); 
const app = express(); 

app.listen(3000,() => { 
    console.log('Example listening on port 3000!') 
}); 

const loginRoute = require('./routes/logins.js'); 

app.use('/login', loginRoute); 

const passport = require('passport') 
    , LocalStrategy = require('passport-local').Strategy; 

passport.use(new LocalStrategy(
    function(username, password, done) { 
     User.findOne({ username: username }, function(err, user) { 
      if (err) { return done(err); } 
      if (!user) { 
       return done(null, false, { message: 'Incorrect username.' }); 
      } 
      if (!user.validPassword(password)) { 
       return done(null, false, { message: 'Incorrect password.' }); 
      } 
      return done(null, user); 
     }); 
    } 
)); 

module.exports = app; 

マイルート/ログインファイル:

const express = require('express'); 
const router = express.Router(); 
const pug = require('pug'); 

const login = pug.compileFile('views/login.pug'); 

router.get('/login', function(req, res, next) { 
    res.render('login', { title: 'Login' }); 
}); 

const passport = require('passport'); 

router.post('/login', 
    passport.authenticate('local', { successRedirect: '/', 
     failureRedirect: '/login', 
     failureFlash: true }) 
); 

module.exports = router; 

マイビュー/ login.pugファイル:

doctype html 
html 
    head 
    body 
     h1 #{title} 
     form(action='/login', method='post') 
      div 
       label Username: 
       input(type='text', name='username') 
      div 
       label Password: 
       input(type='password', name='password') 
      div 
       input(type='submit', value='Log In') 

誰かが私を助けることができる場合これは、私はとても感謝しています。あなたはパス/loginにルータを設置している、そして、あなたのルータにあなたが持っているので

+1

のようになります。 ' – XPLOT1ON

答えて

1

router.get('/login', function(req, res){...}) 

Expressが評価するルータのファイルのパスがにrelavtiveあるべき

localhost:3000/login/loginように、そのそれをマウントするパス。あなただけの `module.exportsは=アプリ以上に` app.listen`ブロックを移動してみてくださいすることができますので、localhost:3000/loginのためにあなたのloginsルータはこの

router.get('/', function(req, res){...}) 
//and 
router.post('/', function(req, res){...}) 
関連する問題