所以我和ChicagoBoss共度了一个晚上。我现在正在尝试将ChicagoBoss与MongoDB连接起来构建一个应用程序(并学习我在此过程中一直关注的两项新技术)。不幸的是,我似乎遇到了麻烦。具体来说,在创建用户之后,密码似乎不是它所设置的密码。请注意,除配置代码外,所有代码都直接来自Chicago Boss教程。
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)用户已创建但未作为user-1识别,而是作为usr-51970a2a3e01c027d4000001。
为什么?我认为ChicagoBoss遵循自动增量数字指数的轨道惯例?
2)即使使用了传递给hash_for的密码,用户也永远无法登录。
3)重新启动Chicago Boss服务器后,将保留新创建的数据库对象 - 因此mongo至少可以正确保存。
任何人都可以了解这里发生的事情吗? MongoDB如何尝试保存用户?使用MongoDB连接Chicago Boss的正确方法是什么,boss_db本身不能处理MongoDB吗?
所有这一切的教程都试图用作跳转点:
https://github.com/evanmiller/ChicagoBoss/wiki/An-Evening-With-Chicago-Boss
答案 0 :(得分:2)
芝加哥老板确实支持MongoDB,但与SQL数据库相比,MongoDB有些不同。特别是,因为它是“巨大的”,MongoDB使用UUID而不是自动递增ID。这允许在不保持集中计数器的情况下创建新文档。这就解释了为什么ID是“usr-51970a2a3e01c027d4000001”而不是“usr-1”。
至于密码问题,我认为下一步是添加调试打印语句。数据库期望的哈希值是多少? DB是否保存了正确的哈希值?如果您通过管理界面创建了用户,则可能会出现轻微错误,例如密码中的额外换行符。
另外,请随时在邮件列表或IRC上ping我们。