我应该如何validation错误与续集和护照login
我已经设置在用户模型中validation。 我的路线代码是这样的,我想要validation。
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 } };
所以我不知道我在这里做错了什么,或者我忘记了哪些事情。 那么有什么想法呢?
这几乎是好的,你应该知道的唯一的事情就是当你调用next()
,express会将请求传递给下一个处理函数,这是passportjsauthentication函数。
你可以按照你的意愿要求和res
。 如果请求未通过validation条件,则可以发送错误或呈现另一个页面,如正常响应。 但在这些情况下不要调用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 } ));