首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YAWS:从1.87移植到2.0.4

YAWS:从1.87移植到2.0.4
EN

Stack Overflow用户
提问于 2017-02-28 16:33:39
回答 2查看 55关注 0票数 1

我决定升级我的系统,用基于YAWS的web界面运行Erlang。我已经重新编译了Erlang部分,并且在测试web部分时,我在YAWS处理的登录过程中遇到了错误。

特别是,我在嵌入式模式下使用YAWS,配置是:

代码语言:javascript
复制
#sconf{listen       = Ip,
         servername   = HostName,
         port         = get_port(),
         docroot      = get_docroot(),
         errormod_404 = ?MODULE,
         partial_post_size = 1000000,
         authdirs = [#auth {dir = ["/"], realm = Realm, type="Basic", users = [{User, Pwd}]}]}

get_port()和get_docroot()是正确的,值来自配置文件作为User和PWD值。

当我连接到web界面时,浏览器向我显示登录表单,因此我插入了正确的帐户,但当我确认发生的情况是:

代码语言:javascript
复制
Yaws process died: {function_clause,
                   [{yaws_server,'-handle_auth/4-fun-1-',
                        [{"admin","admin"}],
                        [{file,"yaws_server.erl"},{line,2175}]},
                    {lists,any,2,[{file,"lists.erl"},{line,1225}]},
                    {yaws_server,handle_auth,4,
                        [{file,"yaws_server.erl"},{line,2178}]},
                    {yaws_server,is_auth,5,
                        [{file,"yaws_server.erl"},{line,2045}]},
                    {yaws_server,is_req_auth,3,
                        [{file,"yaws_server.erl"},{line,2032}]},
                    {yaws_server,handle_normal_request,5,
                        [{file,"yaws_server.erl"},{line,1932}]},
                    {yaws_server,aloop,4,
                        [{file,"yaws_server.erl"},{line,1242}]},
                    {yaws_server,acceptor0,2,
                        [{file,"yaws_server.erl"},{line,1065}]}]}

并且登录失败。

我在YAWS文档中寻找了解决方案,但我找到了任何东西,似乎我的配置是正确的(这与以前的YAWS版本没有问题的情况相同)。

提前感谢你的帮助。

马泰奥

EN

回答 2

Stack Overflow用户

发布于 2017-02-28 17:11:26

新版本要求用户字段是4元组的列表,而不是2元组。(这就是为什么文件"yaws_server.erl“的第2175行会崩溃的原因。)

票数 1
EN

Stack Overflow用户

发布于 2017-02-28 17:57:54

谢谢你的回答,理查德。

我已经阅读了关于crypto:hash函数的代码(yaws_server.erl)和Erlang文档,所以最终我发现了问题:

在我的例子中,用户列表的正确配置是

代码语言:javascript
复制
#sconf{listen       = Ip,
     servername   = HostName,
     port         = get_port(),
     docroot      = get_docroot(),
     errormod_404 = ?MODULE,
     partial_post_size = 1000000,
     authdirs = [#auth {dir = ["/"], realm = Realm, type="Basic", users = [{User, md4, Salt, crypto:hash(md4, [Salt,Pwd])}]}

在第二步中,我将删除带有散列值的明文Pwd。

非常感谢。

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

https://stackoverflow.com/questions/42503744

复制
相关文章

相似问题

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