所以我和ChicagoBoss一起工作了一个晚上。我现在正在尝试将ChicagoBoss和MongoDB连接起来,用它来构建一个应用程序(并学习两项我一直在关注的新技术)。不幸的是,我似乎遇到了一个障碍。具体地说,在创建用户之后,密码看起来并不是它设置的密码。请注意,除了配置代码之外,所有代码都直接来自芝加哥老板教程。
boss.config - re数据库:
{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-51970a2a3e01c027d4000001。
为什么会这样呢?我以为ChicagoBoss遵循了rails自动递增数字索引的约定?
2)即使使用传入hash_for的密码,用户也无法登录。
3)在芝加哥老板服务器重新启动后,新创建的数据库对象将被保留-因此mongo至少正确地保存了一些内容。
有人能解释一下这里发生了什么吗?MongoDB是如何尝试拯救用户的?将芝加哥老板与MongoDB连接的正确方法是什么,boss_db不是本机处理MongoDB吗?
所有这一切都试图用作跳跃点的教程是:
https://github.com/evanmiller/ChicagoBoss/wiki/An-Evening-With-Chicago-Boss
发布于 2013-05-18 21:27:54
芝加哥老板确实支持MongoDB,但与SQL数据库相比,MongoDB有一些不同之处。特别是,因为它是“庞大的”,所以MongoDB使用UUID而不是自动递增的ID。这允许在不保留集中式计数器的情况下创建新文档。这就解释了为什么ID是"usr-51970a2a3e01c027d4000001“而不是"usr-1”。
至于密码问题,我认为下一步是添加调试打印语句。数据库期望的哈希值是多少?数据库是否保存了正确的哈希值?如果您通过管理界面创建用户,则可能会出现一些小错误,如密码中额外的换行符。
另外,请随时在邮件列表或IRC上与我们联系。
https://stackoverflow.com/questions/16620949
复制相似问题