小编DrH*_*all的帖子

更多Passport.js困境 - 挂起表单提交

我正在设置我认为可能是最简单的身份验证 - 网站加载在登录屏幕上,用户在表单中输入凭据,提交时我使用Passport.JS和Sequelize来检查凭据.大部分内容都是从各种教程或Passport网站本身复制而来的.无论我做什么,改变或尝试,只要我点击表单提交按钮,网站就会挂起.在开发工具网络选项卡中,我只是将/ login的发布请求显示为待处理.

为了消除所有可能出现的问题,我剥离了Sequelize,并使用了硬编码用户,ala本地使用示例在护照github页面上.尽管如此,没有改变,Sequelize不是问题所在.

我确定这是愚蠢的.我尝试了明显的解决方案,比如确保我的表单发送'用户名'和'密码'.

我的表单看起来像这样:

form(method="post", action="/login")
  fieldset
    legend Please Log In
    label(for="username") Username:
    input#username(type='text', name="username", autocomplete="off")
    label(for="password") Password:
    input#password(type='password', name="password")
    button#login(type="submit") Log In
Run Code Online (Sandbox Code Playgroud)

在节点中我的app.js使用路由器,其中包括:

var login = require('../app/controllers/login');
app.get('/', login.index);
app.post('/login', login.auth);
Run Code Online (Sandbox Code Playgroud)

页面在get请求上加载正常.在帖子上它指向这个:

exports.auth = function (req, res, next) {
  console.log(req.body);
   passport.authenticate('local', {
    successRedirect: '/home',
    failureRedirect: '/',
    failureFlash: true
  });
};
Run Code Online (Sandbox Code Playgroud)

console.log(req.body)很好,显示了表单值,所以我们可以这么做.但没有任何事情.这是最后一部分:

passport.use(new LocalStrategy(
  function(username, password, done) {
    console.log('local strat invoked');
    findByUsername(username, function(err, user) {
      if (err) { return done(err); }
      if (!user) { return …
Run Code Online (Sandbox Code Playgroud)

node.js passport.js

15
推荐指数
1
解决办法
4171
查看次数

使用mysql-node INSERT INTO错误

这看起来应该是非常容易的,而且我已经被困了大约两个小时了.有四个人看过,没有发现明显的问题.所以我再次转向SO社区.

真的很简单 - 我只是想通过mysql-node在mysql数据库中插入数据.我没有连接错误,SELECT工作正常.使用的代码是:

exports.postNewCast = function(data, res) {
  var query = "INSERT INTO cast (name, portrait, role, bio) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');";
  console.log(query);
  dbConnection.query(query, data, function(err, result) {
    if (err) {
      console.log(err);
    } else {
      sendResponse(res, "Cast Member Added", 201);
    }
  });
};
Run Code Online (Sandbox Code Playgroud)

记录的错误是:

{ [Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your …
Run Code Online (Sandbox Code Playgroud)

mysql node-mysql

6
推荐指数
1
解决办法
2万
查看次数

Hammer JS v2.0.4仅在Chrome 37.0中无法识别'panstart'或'panmove'

我想通过构建一个简单的程序在屏幕上拖动一个元素来学习Hammer JS,就像在Hammer主页上一样.

我使用了Hammer github页面上发布的代码,它似乎与主页上使用的代码相同.我在Chrome(37.0/OSX)中测试了这项工作.使用它一段时间并且无法移动元素后,我在Safari和FF中打开了相同的页面.它在这两种浏览器中都运行良好.

为了减少事情,我添加了代码所需的代码以查看事件触发器:

var mover = document.getElementById("mover");

var mc = new Hammer.Manager(mover);
mc.add(new Hammer.Pan({ threshold: 0, pointers: 0 }));

mc.on("panstart panmove", function(ev) {
  console.log(ev);
});
Run Code Online (Sandbox Code Playgroud)

Chrome中没有记录任何内容,但我在Safari和FF中按预期正确记录.我扩展了事件监听器,包括'pan,panend,pancancel,panleft,panright,panup,pandown'.这些事件将登录Chrome,因此似乎只有panstart和panmove被忽略了.

因此,此代码将在Chrome的hammer.js页面上运行,因此很明显Chrome确实会在该浏览器中看到panstart和panmove事件,这只是我的代码中没有发生的事情.这意味着我遗漏了一些东西,尽管从他们的网站上复制了代码.我检查过我们使用的是相同的Hammer版本,但我不确定此处还有什么需要检查.

还有其他人遇到并解决了这个问题吗?或者也许知道我在创建这个问题时做错了什么?

谢谢.

javascript google-chrome hammer.js

6
推荐指数
1
解决办法
1270
查看次数

在Grunt中启动Django虚拟环境

来自JS/Node开发背景,我喜欢使用Grunt进行大量的自动化.对于最近的一个项目,我选择了一些婴儿Django,以了解它的运作方式,但仍然希望将Grunt集成到我的一些工作流程中.

我目前通过Grunt使用spawn-shell模块启动我的Django服务器.这很好用,但我也使用virtualenv设置,并且还想通过Grunt启动它.

我用来启动虚拟环境的命令是:

source ./venv/bin/activate
Run Code Online (Sandbox Code Playgroud)

从终端命令行可以正常工作.但是,从grunt shell或grunt exec执行此命令不会执行任何操作.我没有得到Grunt的错误(它表示运行,然后完成没有错误),但没有任何开始.

grunt exec命令如下:

exec: {
  start: {
    cmd: function() {
      return "source ./venv/bin/activate";
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

而shell命令是:

贝壳: {

  start: {
    command: 'source ./venv/bin/activate',
    options: {
      stdout: true
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

关于如何使这个工作的任何想法?或者这是不可能的,我应该在开始时手动输入命令?

django virtualenv gruntjs

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

将SQLite用于我的网站数据库时的实用性和安全性?

我正在为我工​​作的公司建立一个网站,其前端已经完成.目前,该站点通过读取JSON文件的信息填充自身.

我将很快离开这个工作,并希望离开网站,以便其他员工能够更新它,而无需知道如何正确读取和写入JSON数据.所以我写了一个非常简单的站点来进行更新(列出当前在实际站点上的项目,让用户添加项目,删除项目或重新排序项目.)数据都是文本,我正在做一些基本的清理JS在调用服务器之前编写.更重要的是,我使用.htaccess要求员工登录甚至到达网站的这一部分.

所以现在我到了需要实际数据库写入的地步.由于我们的网站是从OSX服务器运行的,我们已经安装了SQLite3.从我在StackOverflow上看到的内容来看,SQLite可以很好地用作实时数据库,只要我不需要UN/PW访问,或者需要扩展到100k +点击.(我们是一家小公司 - 我们每天将获得2-3次点击).

我开始设置一个PHP页面来连接数据库并写入它,并在发生静默失败后,意识到.DB文件需要对组进行RW访问才能让网站访问它.这意味着对于db和保存它的目录(我假设),chmod至少为444(如果不是777).我问过处理服务器管理员的老板关于设置它的问题,他说他不喜欢这样做.虽然我理解他的担忧,但我不确定我还应该做些什么.如果没有RW访问文件,我不知道任何其他方法来使这项工作.

那么我的选择是什么?我应该放弃SQLite并只安装MySQL吗?如果我坚持使用SQLite,那么安全性的最佳实践是什么?是否有一些可接受的最佳方法来设置batabase/encrypt数据/隐藏数据库?

谢谢!

php database sqlite

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