我正在设置我认为可能是最简单的身份验证 - 网站加载在登录屏幕上,用户在表单中输入凭据,提交时我使用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) 这看起来应该是非常容易的,而且我已经被困了大约两个小时了.有四个人看过,没有发现明显的问题.所以我再次转向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) 我想通过构建一个简单的程序在屏幕上拖动一个元素来学习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版本,但我不确定此处还有什么需要检查.
还有其他人遇到并解决了这个问题吗?或者也许知道我在创建这个问题时做错了什么?
谢谢.
来自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)
关于如何使这个工作的任何想法?或者这是不可能的,我应该在开始时手动输入命令?
我正在为我工作的公司建立一个网站,其前端已经完成.目前,该站点通过读取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数据/隐藏数据库?
谢谢!
database ×1
django ×1
gruntjs ×1
hammer.js ×1
javascript ×1
mysql ×1
node-mysql ×1
node.js ×1
passport.js ×1
php ×1
sqlite ×1
virtualenv ×1