ChicagoBoss似乎没有将正确的值保存到MongoDB中

时间:2013-05-18 05:15:13

标签: mongodb model-view-controller erlang chicagoboss nosql

所以我和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

1 个答案:

答案 0 :(得分:2)

芝加哥老板确实支持MongoDB,但与SQL数据库相比,MongoDB有些不同。特别是,因为它是“巨大的”,MongoDB使用UUID而不是自动递增ID。这允许在不保持集中计数器的情况下创建新文档。这就解释了为什么ID是“usr-51970a2a3e01c027d4000001”而不是“usr-1”。

至于密码问题,我认为下一步是添加调试打印语句。数据库期望的哈希值是多少? DB是否保存了正确的哈希值?如果您通过管理界面创建了用户,则可能会出现轻微错误,例如密码中的额外换行符。

另外,请随时在邮件列表或IRC上ping我们。