gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:33:17 25 4
gpt4 key购买 nike

所以我在 ChicagoBoss 度过了一个晚上。我现在正在尝试将 ChicagoBoss 与 MongoDB 连接起来,以使用它构建一个应用程序(并学习我在此过程中一直关注的两项新技术)。不幸的是,我似乎遇到了障碍。具体来说,在创建用户后,密码似乎与设置的不一样。请注意,除了配置代码外,所有代码都直接来自 Chicago Boss 教程。

boss.config - 重新数据库:

 {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 遵循了自动递增数字索引的 Rails 惯例?

2) 即使使用传递给 hash_for 的密码,用户也永远无法登录。

3) Chicago Boss 服务器重启后,新创建的数据库对象被保留——所以 mongo 至少正确地保存了一些东西。

任何人都可以阐明这里发生的事情吗? MongoDB 如何拯救用户?将 Chicago Boss 与 MongoDB 连接起来的正确方法是什么?boss_db 是否不能本地处理 MongoDB?

所有这些尝试用作起点的教程是:

https://github.com/evanmiller/ChicagoBoss/wiki/An-Evening-With-Chicago-Boss

最佳答案

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

关于密码的问题,我觉得下一步就是增加调试打印语句。数据库期望什么哈希值?数据库是否保存了正确的散列值?如果您通过管理界面创建用户,则可能会出现一些小错误,例如密码中多了一个换行符。

此外,请随时通过邮件列表或 IRC 联系我们。

关于mongodb - ChicagoBoss 似乎没有将正确的值保存到 MongoDB 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16620949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com