合并express.js的everyauth中的登录页面和注册页面

时间:2011-10-20 03:10:27

标签: node.js express everyauth

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

500 ReferenceError:/Users/eterna/Downloads/fame/views/index.jade:8 6 | label(for = everyauth.password.loginFormFieldName)Login 7 | input(type ='text',name = everyauth.password.loginFormFieldName,value = userParams [everyauth.password.loginFormFieldName])> 8 | #email 9 | label(for = everyauth.password.emailFormFieldName)Email 10 |输入(type ='text',name ='email',value = userParams ['email'])11 | #password userParams未定义。

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

1 个答案:

答案 0 :(得分:0)

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

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

2)创建注册和登录选项卡,因此当您单击注册时,您将显示注册表单,当您单击登录选项卡时,它将切换到另一个表单

你可以通过覆盖respondToLoginFail来让Everyauth做这个逻辑,所以当它尝试记录这个人并失败时,它会重建请求并对寄存器路径进行调用。我不推荐它,但它可以使它工作。