0

在密码验证的默认everyauth 设置中,登录和注册页面是不同的。我尝试合并相应的jade文件并将我的服务器文件中的get/post注册和登录路径设置为相同。然后我加载了合并页面并收到以下错误:

500 参考错误:/Users/eterna/Downloads/fame/views/index.jade:8 6| 标签(for=everyauth.password.loginFormFieldName) 登录 7| 输入(类型='文本',名称=everyauth.password.loginFormFieldName,值=userParams[everyauth.password.loginFormFieldName])> 8| #电子邮件 9| 标签(for=everyauth.password.emailFormFieldName) 电子邮件 10| 输入(类型='文本',名称='电子邮件',值=用户参数['电子邮件'])11 | #password userParams 未定义。

我显然是以错误的方式解决这个问题。是否有将登录和注册放在同一页面上的简单解决方案?

4

1 回答 1

0

考虑阅读默认设置的代码。不查看您的代码(因为您没有发布它),我可以从错误中看到它正在跳过第 7 行,因为您正在尝试访问 userParams,它不存在用于登录,但它确实存在用于注册。看起来 userParams 只保存用户在字段中输入的输入,因此当出现注册错误时,用户已经输入的文本被放入表单中。(即,如果他们输入了他们的电子邮件地址,但他们的密码太短,注册错误并且仍然会在输入字段中显示他们的电子邮件地址)

结合注册和登录的最简单方法是客户端。您可以 1) 在页面上有一个带有两个提交按钮的表单 - 注册和登录。根据用户点击的内容,表单会发布到不同的入口点。

2)创建注册和登录选项卡,因此当您单击注册时,您会显示注册表单,当您单击登录选项卡时,它会切换到其他表单

您可以通过覆盖respondToLoginFail 来使everyauth 执行此逻辑,因此当它尝试登录并失败时,它会重建请求并对注册路径进行发布调用。我不会推荐它,但它可以使它工作。

于 2012-06-28T05:58:53.537 回答