芝加哥老板没有';似乎没有将正确的值保存到MongoDB中
所以我和芝加哥老板共度了一个晚上。我现在正试图将ChicagoBoss与MongoDB联系起来,用它构建一个应用程序(并学习两项我一直关注的新技术)。不幸的是,我似乎遇到了麻烦。具体来说,创建用户后,密码似乎与设置的密码不同。请注意,除了配置代码之外,所有代码都直接来自Chicago Boss教程 boss.config-re数据库:芝加哥老板没有';似乎没有将正确的值保存到MongoDB中,mongodb,model-view-controller,erlang,chicagoboss,nosql,Mongodb,Model View Controller,Erlang,Chicagoboss,Nosql,所以我和芝加哥老板共度了一个晚上。我现在正试图将ChicagoBoss与MongoDB联系起来,用它构建一个应用程序(并学习两项我一直关注的新技术)。不幸的是,我似乎遇到了麻烦。具体来说,创建用户后,密码似乎与设置的密码不同。请注意,除了配置代码之外,所有代码都直接来自Chicago Boss教程 boss.config-re数据库: {db_host, "localhost"}, {db_port, 27017}, {db_adapter, mongodb}, 登录功能 login(
{db_host, "localhost"},
{db_port, 27017},
{db_adapter, mongodb},
登录功能
login('POST', []) ->
Name = Req:post_param("name"),
case boss_db:find(user, [{name, Name}]) of
[User] ->
case User:check_password(Req:post_param("password")) of
true ->
{redirect, proplists:get_value("redirect",
Req:post_params(), "/"), User:login_cookies()};
false ->
{ok, [{error, "Bad name/password combination"}]}
end;
[] ->
{ok, [{error, "No User named " ++ Name}]}
end.
然后-从管理界面创建用户并使用
hash_for(Name, Password) ->
Salt = mochihex:to_hex(erlang:md5(Name)),
hash_password(Password, Salt).
要生成哈希,将发生以下两种情况:
1) 用户已创建,但id不是user-1,而是usr-51970A2A3E01C027D400001
为什么呢?我以为ChicagoBoss遵循rails的自动递增数字索引惯例
2) 即使使用了传递到哈希_的密码,用户也无法登录
3) 芝加哥Boss服务器重新启动后,新创建的数据库对象将被保留,因此mongo至少正确地保存了一些内容
有人能解释一下这里发生了什么事吗?MongoDB是如何试图保存用户的?连接芝加哥Boss和MongoDB的正确方法是什么?Boss_db不是本地处理MongoDB吗
所有这些尝试用作跳转点的教程如下:
芝加哥老板确实支持MongoDB,但与SQL数据库相比,MongoDB在某些方面会有所不同。特别是,因为它“庞大”,MongoDB使用UUID而不是自动递增的ID。这允许创建新文档,而无需保留集中计数器。这就解释了为什么ID是“usr-51970A2A3E01C027D400001”而不是“usr-1” 至于密码问题,我认为下一步是添加调试打印语句。DB需要什么哈希值?数据库是否保存了正确的哈希值?如果通过管理界面创建用户,则可能会出现轻微错误,例如密码中出现额外的换行符
此外,您可以随时在邮件列表或IRC上ping我们。以下内容存储在mongo数据库中:{“_id”:ObjectId(“51970A2A3E01C027D400001”),“name:“Dante Nuno”,“password_hash:“dc3b2391e431d9bc574f48c092eb3313”}以下是运行用户库的结果:“Dante Nuno”,“test1234”)。“dc3b2391e431d9bc574f48c092eb3313”然而,以下是在用户库上粘贴erlang:display(PasswordHash)的结果:检查密码看起来DB返回的是二进制,函数的hash\u返回的是字符串。试着运行二进制列表(PasswordHash),看看这是否解决了问题。它解决了(我已经在IRC频道的LooX建议下这么做了)。我要把这个记为Mongo gotcha。谢谢我也遇到了同样的问题,最后在PasswordHash和其他一些字段的模型中添加了“::string()”。