【发布时间】:2015-01-07 16:28:11
【问题描述】:
近一天以来,我一直在尝试将 PassportJS 集成到在 Express 之上运行的节点应用程序中,但我又回到了同样的错误。要么我收到了错误的请求,要么收到了POST /login 404。我真的需要你的帮助。
我的应用程序非常简单。
这是我的 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());
路由文件:
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 %>
models/user.js
var mongoose = require('mongoose');
module.exports = mongoose.model('User', {
username : { type: String },
password : { type: String }
});
我已经为用户创建了我的 模型,但我被重定向到显示错误请求的页面。在控制台中,我看到了POST /login 400。
我还错过了什么或者我还应该做什么?或者,当我尝试将 PassportJS 集成到我的应用程序中时,我应该记住什么?我真的很感激任何帮助。
我刚刚开始学习node,我真的很想从这个基本功能(即身份验证)开始。
【问题讨论】:
-
404 error是“找不到页面”。可能发生缺少路线或不正确的网址。400 error是“错误请求”。可能是输入值不正确或正文解析器不起作用
标签: node.js express passport.js