Tag: validation

根据Mongoose模式validation对象而不保存为新文档

我试图validation一些将被插入到一个新文档中的数据,但不是在很多其他事情需要发生之前。 所以我打算给静态方法添加一个函数,希望能够在模型模式中validation数组中的对象。 下面是代码: module.exports = Mongoose => { const Schema = Mongoose.Schema const peopleSchema = new Schema({ name: { type: Schema.Types.String, required: true, minlength: 3, maxlength: 25 }, age: Schema.Types.Number }) /** * Validate the settings of an array of people * * @param {array} people Array of people (objects) * @return {boolean} */ peopleSchema.statics.validatePeople […]

为什么Mongoose不validation空文档?

比方说,我有一个非常简单的架构与自定义validationfunction,总是返回false。 var MofoSchema = new mongoose.Schema({ name: String }); MofoSchema.path('name').validate(function (value) { console.log("I'm validating"); return false; }, 'No pasaran'); mongoose.model('Mofo', MofoSchema); 然后我创build一个新的文档实例,并validation它: var Mofo = mongoose.model('Mofo'); var mofo = new Mofo({name: "Tarte flambée"}); mofo.validate(function(err) { console.log(err); }); 完美的是,自定义validation器function被调用, err被填充。 但是现在我也是这样做,没有数据 : var Mofo = mongoose.model('Mofo'); var mofo = new Mofo({}); mofo.validate(function(err) { console.log(err); }); 自定义validation器函数未被调用 […]

不能得到mongoose独特validation工作

它不是那么困难,但我总是得到默认mongoose11000错误。 这里是我的代码的简化版本: model import mongoose from 'mongoose'; import uniqueValidator from 'mongoose-unique-validator'; const UserSchema = new mongoose.Schema({ email: { type: String, index: true, trim: true, unique: true, uniqueCaseInsensitive: true, required: true } }); UserSchema.plugin(uniqueValidator); controller var data = {email: 'info@foobar.com'}; var user = new User(data); user.save(function (err) { console.log(err); }); 但是我总是得到这个 { "code": 11000, "index": 0, […]

如何validationsequelize.js中的string字段?

我如何validation数据库字段只接受一个string? 在我的数据库中,我有两个字段: description :string completed :布尔值 我希望description字段只接受一个string值。 我的意思是: 'description':'text'=>数据库接受这个请求 'descrition':true或false =>数据库拒绝这个请求 'descrition':123 =>数据库拒绝这个请求 目前, description字段可以接受一个布尔值,所以在我的configuration中有一个问题。 module.exports = function(sequelize, DataTypes) { return sequelize.define('todo', { description: { type: DataTypes.STRING, allowNull:false, validate: { len: [1, 250], isBoolean:false, isAlpha:true } }, completed: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false, validate:{ isBoolean:true } } }); };

Node.js双因素身份validation

我正在使用专门为Steam应用程序使用身份validation的node.js开发个人程序。 login从外部.txt文件中读取用户名和密码,它使用数组定位,按“:”(冒号)拆分。 现在,这是我需要帮助的地方。 对于某些帐户,Steam使用随时间在移动应用程序或电子邮件中随机生成的双因素代码。 在这个时候,我有我的程序,以便检查帐户是否启用了validation代码,如果有,我会提示手动input适当的两个因子代码。 我知道有一种方法可以将我的程序合并到这个validation代码中,而不需要用户手动完成,但是我不知道从哪里开始。 问题:我希望程序能够随机生成一个代码,并自动将其设置为无需执行任何手动操作。 代码如下: else if (eresult === Steam.EResult.AccountLoginDeniedNeedTwoFactor) { login.two_factor_code = readline.question(`[${param[0]}] Mobile auth code: `); client.disconnect(); client.connect(); } else if (eresult === Steam.EResult.AccountLogonDenied) { login.auth_code = readline.question(`[${param[0]}] Steam Guard code: `); client.disconnect(); client.connect(); } 谢谢。

Node.js服务器端的表单validation与客户端响应

Express-form是一个非常强大的node.js / expressvalidation插件。 但是,在示例和文档中,所有的响应都是服务器端(console.log),这对于开发来说已经足够了,但是告诉用户出了什么问题并不太实际。 目前,我可以想象两种不同的解决scheme: 提交表单,并重新返回/渲染表单req.body和validation信息附加到“错误”类错误的领域。 使用AJAX提交表单。 我更喜欢选项2,因为我不想再次查询数据库时,渲染“新”。 但是我必须知道如何将validation结果传递回客户端,并向input字段添加“错误”类。 有任何想法吗?

基于令牌的身份validation和浏览器上的会话/本地存储

好吧,我想实现一个networking应用程序,使用身份validation机制来个性化网站上的用户体验,但同时我有一些问题,我想清除。 因此,一开始,用户将以他们的用户名和密码login(现在让我们忘记第三方authentication,并假设有一个适当的注册页面),并成功login后,服务器将生成一个令牌,用于从该特定用户的浏览器。 接下来,我正试图validation我的理解并提出相关的问题。 据我所知,在服务器端使用令牌的速度要快得多(如果你愿意的话,cpu密集程度要低一些),因为现在不需要解密存储在服务器上的密码,并将其与使用请求(例如使用bcrypt ),但相反,检查要简单得多,归结为令牌是否过期。 作为额外的好处,用户名和密码的敏感信息不会重复传输。 检查点1.我们希望应用程序在用户自愿或不小心按下“刷新/重新加载”时强健,这样令牌在刷新后仍然可以使用(而不必再用凭证login)。 现在很清楚,要么我们必须使用cookie(即会话),要么在客户端使用会话存储或本地存储。 有另一种方法吗? 据我所知,答案是否定的(是的,本地存储有不同的select,如Web存储,Web SQL数据库,索引数据库和文件访问,但这是超出了问题)。 这是对还是错? 而且,在客户端处理令牌(存储/调用)最常用的做法是什么? 检查点2.令牌到期。 据我所知,这个想法是,每次使用有效的令牌时,该特定令牌的到期时间被更新(例如7或10天后)。 这对于定期访问该站点的用户仅需要login一次就具有很好的好处。 但是,不利之处似乎在于,对于相同的用户,令牌保持不变 – 可能永远不变(除非令牌过期)。 那么问题是,这是安全的吗? 这里的另一个想法是更新后端的令牌,在客户端发送更新的令牌,更新浏览器的本地存储器上的令牌,而对最终用户而言,所有内容都是透明的。 这是常见的做法吗? 我可以看到,现在在服务器端,需要对生成的令牌保持谨慎(请参阅下面的场景)。 是否有共同的做法来处理这个(如果需要处理的话)? (假设用户A有两台设备A1和A2,使用令牌TA1,从现在开始7天到期,用户B有设备B1使用令牌TB1,从现在起7天后到期,所有的令牌都存储在某种本地存储器中。六天后(即实际到期前一天),当用户A正在使用设备A1时,TA1更新为TA2,同样在当天,TB1更新为TA1,现在如果用户A使用设备A2,令牌(TA1),但在使用API​​时将以用户B身份进行身份validation!) 检查点3.我一直认为基于令牌的authentication就是这样。 通过http请求的头部发送一个令牌,这就是全部。 显然,如果你也发送用户名,那么我们就避免发送密码,而且我们也避免了上述的问题。 不过,这种方法我不太喜欢。 毕竟,现在令牌作为一个密码。 唯一的节省是在服务器端匹配证书时的解密(即cpu-cycles)。 这种方法是废话还是什么? 检查点4.如果将来想创build智能手机或平板电脑的专用应用程序,则在请求的标题上使用标记(应该是非常容易),而不是依赖于Cookie和会话(请参阅cookie容器) 。 目前这对我来说很小,但这是真的吗? 我认为上面的问题是实现不可知的,但是如果你想给开发指针,我将使用node.js。

避免JavaScript前端和Java后端的validation码重复?

我们有一个标准的Web应用程序,前端使用Angular,后端使用Java 7编写。我注意到的是,我们得到了很多重复的代码。 也就是说,validation是通过angular度来执行客户端的,但是我不能完全相信他,因为用户可以禁用客户端validation并简单地向服务器提交发布的查询。 因此,我必须在服务器端重复Java中的相同validation逻辑。 这是非常乏味的,但我不知道如何避免这种情况。 也许我可以用一个javascript框架(假设它是Node.js)编写一些后端部分,可以使用与前端相同的validation库,并使Java后端与node.js交互? 为了解决这个问题,最好的办法是什么?

如何使用express-validator npmvalidation密码

我正在使用节点编写rest API,表示web模块。 为了validation,我使用了express-validator npm。 我想在密码字段上应用一些validation规则。 我如何使用express-validator来实现它? 我要申请密码的validation规则如下: 最小8字长。 至less有一个大写字母。 至less有一个小写字母。 至less有一个特殊字符。 我在这个链接中读到有一个函数叫做regex() 。 所以我尝试了,但没有工作。 我的方法是: req.check("password", "Password should be combination of one uppercase , one lower case, one special char, one digit and min 8 , max 20 char long").regex("/^(?=.*\d)(?=.*[az])(?=.*[AZ])[0-9a-zA-Z]{8,}$/", "i"); 错误 在express-js中列出了所有的方法,但没有find解决我的问题的方法/技巧。

如何使用快速表单validation错误后重新填充表单字段?

使用node.js和express表单(2.5.9)。 我应该如何使用提交的值重新填充表单域? 我有一个get和一个post路线。 如果表单发布时有validation错误,我将用户redirect到get,问题是重新填充的locals不显示(我有autoLocals:true,所以我认为这是因为我正在redirect和res被重置。) 那么你们如何重新填充你的应用程序stream程,你是否res.send而不是res.redirect并重新设置整个事情呢? 这似乎是重复的。 这里是我的邮政路线的一个例子: app.post( '/projects/:id' , form(field("title").required("title", "Title is required) , function (req, res){ if (!req.form.isValid){ res.redirect('/project/'+req.params.id+'/edit'); } else{ // save to db } });