我一直在嘗試將PassportJS集成到運行在Express之上的節點應用程序中幾乎一天,現在我又回到了同樣的錯誤。這是要麼我得到一個不好的要求,要麼我收到一個POST /login 404
。我真的需要你的幫助。在ExpressJS應用程序中集成PassportJS錯誤
我的應用程序很簡單。
這裏是我的app.js文件,我在那裏宣佈護照:
passport.use(new LocalStrategy({
usernameField: 'username',
passwordField: 'password'
},
function(username, password, done) {
db.User.findOne({ username: username }, function (err, user) {
console.dir("Finding");
console.dir(username);
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);
});
}
));
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
db.User.findById(id, function(err, user) {
done(err, user);
});
});
我已經添加內以下app.js太:
app.use(passport.initialize());
app.use(passport.session());
的路線 file:
var express = require('express');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var User = require('../models/user');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'BizTapp' });
});
router.get('/login', function(req,res){
res.render('login', { title: 'Login' });
});
router.post('/login', passport.authenticate('local'),
function(req,res){
res.redirect('/');
});
module.exports = router;
而且我HTML文件:
<% include auth-header %>
<div class="login-panel">
<div class="content">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<form method="post" role="form" enctype="multipart/form-data">
<div class="form-group">
<label for="username">User Name</label>
<input type="text" name="username" class="form-control" id="username" placeholder="Enter Username">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" class="form-control" id="password" placeholder="Password">
</div>
<input type="submit" id="btn-login" value="Log In" />
</form>
<h4><a href="/signup">Create a new account?</a></h4>
</div>
</div>
</div>
</div>
<% include footer %>
型號/ user.js的
var mongoose = require('mongoose');
module.exports = mongoose.model('User', {
username : { type: String },
password : { type: String }
});
我已經創建了我的模式用戶,然而,我重定向到頁說不好的要求。裏面控制檯,我看到一個POST /login 400
。
我還錯過了什麼,或者我還應該做什麼?或者,當我嘗試將PassportJS集成到我的應用程序中時,應該記住什麼?我真的很感激任何幫助。
我剛開始學習節點,我真的很想從這個基本功能開始(這是認證)。
'404錯誤'是「頁面未找到」。也許發生在丟失路線或不正確的網址。 '400錯誤'是「錯誤的請求」。也許是由於輸入值不正確或body-parser無法正常工作 – 2014-12-03 02:12:43