首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChicagoBoss似乎没有将正确的值保存到MongoDB中

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

Stack Overflow用户
提问于 2013-05-18 13:15:13
回答 1查看 395关注 0票数 2

所以我和ChicagoBoss一起工作了一个晚上。我现在正在尝试将ChicagoBoss和MongoDB连接起来,用它来构建一个应用程序(并学习两项我一直在关注的新技术)。不幸的是,我似乎遇到了一个障碍。具体地说,在创建用户之后,密码看起来并不是它设置的密码。请注意,除了配置代码之外,所有代码都直接来自芝加哥老板教程。

boss.config - re数据库:

代码语言:javascript
复制
 {db_host, "localhost"},
 {db_port, 27017},
 {db_adapter, mongodb},

登录函数

代码语言:javascript
复制
 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.

然后-从管理界面创建用户并使用

代码语言:javascript
复制
   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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-18 21:27:54

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16620949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档