我已经在用户模型中设置了验证。 我的路线代码是这样的,我试图验证。
var express = require('express');
var loginRouter = express.Router();
var passport = require('passport');
var User = require('../app/models/model')().User;
module.exports = function() {
var loginController = require('../controller/loginController')();
loginRouter.get('/login',loginController.getLogin);
loginRouter.post('/login',
function (req, res, next) {
User.validate().success(function () {
next(); // only call next if validation passes
}).error(function (error) {
console.log(error);
res.redirect('/auth/login');
// or res.send({error: true}) or res.redner( ... )
})
},
passport.authenticate('local-login',{
successRedirect: '/dashboard',
failureRedirect: '/auth/login',
failureFlash : true
}
));
return loginRouter;
user.js的
var Sequelize = require('sequelize');
var attributes = {
username:
{
type: Sequelize.STRING,
field: 'username',
validate: {
notNull: true,
}
},
password:
{
type: Sequelize.STRING,
field: 'password',
validate: {
notNull: true,
}
}
}
var options = {
freezeTableName: true,
timestamps: false
}
module.exports.attributes = attributes;
module.exports.options = options;
model.js
var Sequelize = require('sequelize')
config = require('../../config/config').database;
module.exports = function(){
var sequelize = new Sequelize(config.database,config.username,config.password,config.options);
var UserMeta = require('./User');
var User = sequelize.define('users',UserMeta.attributes,UserMeta.options);
return {
User: User
}
};
所以我不知道我在这里做错了什么,或者我忘记了什么。 所以对它有任何想法吗?
答案 0 :(得分:1)
这几乎是好的,你应该知道的唯一一件事是当你打电话给next()
时,express会将请求传递给下一个处理程序,这是passportjs身份验证功能。
您可以req
和res
按照自己的意愿执行操作。如果请求未通过验证标准,您可以发送错误或呈现另一个页面,如正常响应。但在这些情况下不要致电next()
。
根据您的实现,您的代码可能如下所示:
loginRouter.post('/login',
function (req, res, next) {
//here to get validation error
User.validate().success(function () {
next(); // only call next if validation passes
}).error(function () {
res.redirect('/auth/login');
// or res.send({error: true}) or res.redner( ... )
})
},
passport.authenticate('local-login',{
successRedirect: '/dashboard',
failureRedirect: '/auth/login',
failureFlash : true
}
));