小编lag*_*lex的帖子

在Passport KeystoneJS中创建新用户时出现Mongoose ValidationError

我在我的项目中使用KeystoneJSPassport身份验证插件.

如果用户帐户存在并且与所使用的社交网络绑定,则一切都很有效.但是,在创建新用户时,使用config选项'auto create user': true,我最终会在oauth回调路由上出现500错误.日志说它是验证错误.

ValidationError: Validation failed 
  at model.Document.invalidate (/app/node_modules/keystone/node_modules/mongoose/lib/document.js:1021:32) 
  at /app/node_modules/keystone/node_modules/mongoose/lib/document.js:970:16 
  at validate (/app/node_modules/keystone/node_modules/mongoose/lib/schematype.js:610:7) 
  at /app/node_modules/keystone/node_modules/mongoose/lib/schematype.js:627:9 
  at Array.forEach (native) 
  at SchemaString.SchemaType.doValidate (/app/node_modules/keystone/node_modules/mongoose/lib/schematype.js:614:19) 
  at /app/node_modules/keystone/node_modules/mongoose/lib/document.js:968:9 
  at process._tickCallback (node.js:419:13)
Run Code Online (Sandbox Code Playgroud)

可能是什么导致了这个?


编辑

用户模型:

var keystone = require('keystone'),
Types = keystone.Field.Types,
social = require('keystone-social-login');

/**
 * User Model
 * ==========
 */

var User = new keystone.List('User');

User.add({
    name: { type: Types.Name, required: true, index: true },
    email: { type: Types.Email, initial: true, required: true, index: true …
Run Code Online (Sandbox Code Playgroud)

oauth mongoose node.js passport.js keystonejs

5
推荐指数
0
解决办法
2332
查看次数

Chrome 扩展程序:获取当前个人资料的用户名

我正在为 Chrome 编写一个简单的扩展程序。

用户可以选择设置配置文件名称

个人资料 人名

如何在扩展程序中获得该名称“lan”?

这是一个非常简单的扩展

清单文件

{
    "manifest_version": 2,

    "name": .."description"...
    ...
    "background": {
        "scripts": ["background.js"]
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

背景.js

// how to get the profile name here?
// chrome.what.user.profile.name??
Run Code Online (Sandbox Code Playgroud)

google-chrome-extension

5
推荐指数
1
解决办法
2066
查看次数

如何在不执行的情况下使函数可链接?比如`obj.fn.fn`而不是`obj.fn().fn()`

我在一个对象中有两个函数

var obj = {};
obj.fn1 = function(){ console.log('obj.fn1'); return this; };
obj.fn2 = function(){ console.log('obj.fn2'); return this; };
Run Code Online (Sandbox Code Playgroud)

我希望能够做到

obj.fn1.fn2()
obj.fn2.fn1()
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

编辑:fn1fn2可能是功能或属性访问器,我不只要关心他们做的东西.

我在许多图书馆看过它,比如粉笔 color.red.bold('string').

javascript method-chaining

5
推荐指数
1
解决办法
122
查看次数

使用Babel和PhantomJS,评估在浏览器上下文中执行的函数无法访问辅助函数

我正在尝试将PhantomJS与Babel从ES6编译到ES5的脚本一起使用.

对于某些功能,Babel在文件末尾添加了一些辅助函数(比如_asyncToGenerator_typeof)来评估代码.

但是在Phantom中,有一个evaluate(function(){…})在浏览器上下文中执行的函数,因此它无法访问babel放入的那些辅助函数.

例如,如果我有一个代码:

var page = require('webpage').create();
page.open(url, function(status) {
  var title = page.evaluate(function() {
    typeof(document.title);
  });
});
Run Code Online (Sandbox Code Playgroud)

它编译成

var page = require('webpage').create();
page.open(url, function(status) {
  var title = page.evaluate(function Executed_in_Browser_Context() {
    _typeof(document.title);
  });
});
function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; }
Run Code Online (Sandbox Code Playgroud)

注意typeof已更改为_typeof(对于涉及ES6符号的某些功能)

这里,function Executed_in_Browser_Context它在浏览器上下文中执行,因此它无法访问function _typeof底部文件中定义的内容.因此导致错误

Can't find variable: _typeof
Run Code Online (Sandbox Code Playgroud)

怎么解决这个?

我尝试复制 …

phantomjs babeljs

5
推荐指数
0
解决办法
266
查看次数

如何使用Express和PassportJS正确报告无效登录?

我已成功在我的Express/Mongoose网络应用程序中实现了本地护照,但我无法确定如何正确呈现失败的登录消息.

这是我的登录路线:

app.get('/login', function(req, res) {
   res.render('user/login', {
   });
});
Run Code Online (Sandbox Code Playgroud)

有了这样的路线我该怎么报告无效登录?如果登录成功,将写id/ usernamereq.user对象,但并不能帮助我的"GET /login"路线,因为如果成功,你会重定向到你想去的页面.

这意味着req.user将始终undefined在您GET登录页面时.

我希望能够写出一条消息,上面写着'哟,登录无效!' 当发生以下事情时:

  1. 用户不存在.
  2. 提供的密码不匹配,但用户已存在.

我可能希望根据发生的情况输出不同的消息.

当我实现LocalStrategy时,我使用了以下代码:

passport.use(new LocalStrategy({
    usernameField: 'email'
},
function(email, password, fn) {
  User.findOne({'login.email': email}, function(err, user) {
    // Error was thrown.
    if (err) {
      return fn(err);
    }

    // User does not exist.
    if (!user) {
      return fn(null, false);
    }

    // Passwords do not match.
    if (user.login.password != utility.encryptString(user.login.salt + password)) …
Run Code Online (Sandbox Code Playgroud)

mongoose node.js express passport.js

4
推荐指数
2
解决办法
9095
查看次数

对于带有Node.js的Passport-Local,是否可以使用电子邮件而不是用户名进行身份验证?

我正在使用本地护照在我的节点应用程序上提供本地身份验证.但是,我想将其更改为使用电子邮件地址而不是用户名进行身份验证.有没有办法做到这一点?

谢谢.

node.js passport.js

4
推荐指数
1
解决办法
1999
查看次数

如何让用户登录?是否可以使用ExpressJS和Passport?

我在node.js中有一个服务器,使用快递和护照与passport-local策略.

我有数据库中的用户和通过护照我能够对它们进行身份验证,不幸的是当第二个请求来自同一客户端时该req.isAuthenticated()方法返回false.request(req.user = undefined)中也没有用户.

我也检查过,当我进行身份验证时,虽然我从用户那里回来了,但passport.authenticate('local'...我还是没有req.user填充.如果我尝试手动设置它,它就不会传播以用于后续请求.

我不明白我做错了什么,这是我的代码.

server.js

var express = require('express'),
compass = require('node-compass'),
routes = require('./server/routes')
http = require('http'),
path = require('path'),
passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
Database = require('./server/repositories/database'),
Configuration = require('./server/config').Config,
crypto = require('crypto');

var app = express();

app.enable("jsonp callback");

passport.use(new LocalStrategy(
  function(email, password, done) {
    process.nextTick(function () {
      var userService = new UserService();
      userService.login(email, crypto.createHash('md5').update(password).digest("hex"), function(error, user) {
        if (error) done(error, user);
        else …
Run Code Online (Sandbox Code Playgroud)

node.js express passport.js

4
推荐指数
1
解决办法
3990
查看次数

将具有循环引用的对象从服务器传递到客户端Javascript,同时保留循环

我正在尝试将带有循环引用的对象从node.js服务器传递到客户端javascript.

服务器(node.js):

var object = { circular: object }
//....
app.get('/', function(req, res){    
    res.render('index.jade', {object: object});
});
Run Code Online (Sandbox Code Playgroud)

客户端Jade/Javascript

script var object = !{JSON.stringify(object)};
Run Code Online (Sandbox Code Playgroud)

在这里,我得到object包含循环引用的错误.

没有 循环引用的任何方式来获取object客户端javascript ?

javascript circular-reference node.js express pug

4
推荐指数
1
解决办法
5492
查看次数

在for循环中使用变量作为选择器?

这样的事情可能吗?

for my_class_selector in _aClass _bClass _cClass _dClass _eClass ... 
    .my_class_selector
        display none
Run Code Online (Sandbox Code Playgroud)

基本上我想创建一堆具有类似属性的类...

stylus

4
推荐指数
1
解决办法
805
查看次数

当客户端通过按下后退按钮进入页面时,如何使其加载新副本而不是缓存副本?

我正试图通过点击后退按钮获取一个页面,以便在客户端到达时从服务器加载新副本.默认情况下,它从浏览器内存加载旧的缓存副本.

有没有办法做到这一点?(在node.js中)

window.unload 如上所述添加空函数对我不起作用.

javascript refresh back browser-cache node.js

4
推荐指数
1
解决办法
2495
查看次数