用流星创建自定义登录和注册表格
钥匙要点
- >用流星创建自定义登录和注册表格涉及安装帐户通信软件包,该软件包将自动创建Meteor.users Collection来存储用户数据,消除了为用户相关功能编写自定义逻辑的需要。 >可以使用简单的HTML表单来开发登录和注册系统的用户界面。这些表格的模板包含电子邮件和密码的字段,以及提交按钮。
- >事件处理程序可以设置以响应用户与表格的交互。例如,可以创建“提交表单”事件,以防止表格的默认行为并在提交表单时输出确认消息。 >流星的内置方法,例如counders.createuser()和Meteor.loginwithpassword(),可用于注册新用户并分别登录现有用户。这些方法在注册后自动加密密码并登录用户,减少需要编写的代码数量。
- 开箱即用,您可以使用流星JavaScript框架可以做的最简单的事情之一就是创建一个用户帐户系统。只需安装一对软件包 - 帐户通信和Account-ui-您最终都会获得以下功能功能的界面: 但是,尽管这种简单性很方便,但依靠此样板接口并不能完全具有灵活性。那么,如果我们想创建一个自定义界面供用户注册并登录到我们的网站? 幸运的是,这根本不太困难。在本文中,我将向您展示如何使用流星创建自定义登录和注册表格。但是,本文假设您知道如何使用自己的框架来设置项目。 要播放本文中开发的代码,请查看我设置的GitHub存储库。
- 基本设置 在一个新的流星项目中,通过执行命令来添加帐户通信包:

对于完整的登录和注册系统,我们必须为其中创建许多功能,包括:
meteor <span>add accounts-password</span>
登录
- >忘记密码
- “确认您的电子邮件”页面
- “已确认电子邮件”页
meteor <span>add accounts-password</span>
<span><span><span><template</span> name<span>="register"</span>></span> </span> <span><span><span><form</span>></span> </span> <span><span><span><input</span> type<span>="email"</span> name<span>="registerEmail"</span>></span> </span> <span><span><span><input</span> type<span>="password"</span> name<span>="registerPassword"</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="Register"</span>></span> </span> <span><span><span></form</span>></span> </span><span><span><span></template</span>></span></span>
<span><span><span><template</span> name<span>="login"</span>></span> </span> <span><span><span><form</span>></span> </span> <span><span><span><input</span> type<span>="email"</span> name<span>="loginEmail"</span>></span> </span> <span><span><span><input</span> type<span>="password"</span> name<span>="loginPassword"</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="Login"</span>></span> </span> <span><span><span></form</span>></span> </span><span><span><span></template</span>></span></span>
创建事件
目前,我们的形式是静态的。为了使他们做某事,我们需要他们对提交事件做出反应。让我们通过关注“寄存器”模板来证明这一点。 在项目的JavaScript文件中,编写以下内容:<span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>Custom Registration Tutorial<span><span></title</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> {{#if currentUser}} <span><span><span><p</span>></span>You're logged in.<span><span></p</span>></span> </span> {{else}} {{> register}} {{> login}} {{/if}} <span><span><span></body</span>></span></span>
- 响应提交事件
- 没有任何默认行为
- >在控制台上输出确认消息
<span>if (Meteor.isClient) { </span> <span>Template.register.events({ </span> <span>'submit form': function(event) { </span> event<span>.preventDefault(); </span> <span>console.log("Form submitted."); </span> <span>} </span> <span>}); </span><span>}</span>
<span>Template.register.events({ </span> <span>'submit form': function(event){ </span> event<span>.preventDefault(); </span> <span>var emailVar = event.target.registerEmail.value; </span> <span>var passwordVar = event.target.registerPassword.value; </span> <span>console.log("Form submitted."); </span> <span>} </span><span>});</span>
>将事物钩在一起
将帐户通信软件包添加到项目后,我们可以使用许多方法:-
>
meteor <span>add accounts-password</span>
<span><span><span><template</span> name<span>="register"</span>></span> </span> <span><span><span><form</span>></span> </span> <span><span><span><input</span> type<span>="email"</span> name<span>="registerEmail"</span>></span> </span> <span><span><span><input</span> type<span>="password"</span> name<span>="registerPassword"</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="Register"</span>></span> </span> <span><span><span></form</span>></span> </span><span><span><span></template</span>></span></span>
<span><span><span><template</span> name<span>="login"</span>></span> </span> <span><span><span><form</span>></span> </span> <span><span><span><input</span> type<span>="email"</span> name<span>="loginEmail"</span>></span> </span> <span><span><span><input</span> type<span>="password"</span> name<span>="loginPassword"</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span> value<span>="Login"</span>></span> </span> <span><span><span></form</span>></span> </span><span><span><span></template</span>></span></span>
<span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>Custom Registration Tutorial<span><span></title</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span> {{#if currentUser}} <span><span><span><p</span>></span>You're logged in.<span><span></p</span>></span> </span> {{else}} {{> register}} {{> login}} {{/if}} <span><span><span></body</span>></span></span>
<span>if (Meteor.isClient) { </span> <span>Template.register.events({ </span> <span>'submit form': function(event) { </span> event<span>.preventDefault(); </span> <span>console.log("Form submitted."); </span> <span>} </span> <span>}); </span><span>}</span>
<span>Template.register.events({ </span> <span>'submit form': function(event){ </span> event<span>.preventDefault(); </span> <span>var emailVar = event.target.registerEmail.value; </span> <span>var passwordVar = event.target.registerPassword.value; </span> <span>console.log("Form submitted."); </span> <span>} </span><span>});</span>
登录
现在,用户可以注册并登录,但是,要允许他们登录,让我们首先制作一个新的“仪表板”模板,该模板将在登录时显示:<span>Template.login.events({ </span> <span>'submit form': function(event) { </span> event<span>.preventDefault(); </span> <span>var emailVar = event.target.loginEmail.value; </span> <span>var passwordVar = event.target.loginPassword.value; </span> <span>console.log("Form submitted."); </span> <span>} </span><span>});</span>
<span>Accounts.createUser({ </span> <span>// options go here </span><span>});</span>
<span>Accounts.createUser({ </span> <span>email: emailVar, </span> <span>password: passwordVar </span><span>});</span>
<span>Template.register.events({ </span> <span>'submit form': function(event) { </span> event<span>.preventDefault(); </span> <span>var emailVar = event.target.registerEmail.value; </span> <span>var passwordVar = event.target.registerPassword.value; </span> <span>Accounts.createUser({ </span> <span>email: emailVar, </span> <span>password: passwordVar </span> <span>}); </span> <span>} </span><span>});</span>
结论
我们的代码很少,我们取得了很大的进步,但是如果我们想为帐户系统创建一个完整的接口,那么还有很多事情要做。 这是我建议的:- 启用验证新用户的电子邮件。
- 验证用户的创建(并登录)。
> >将视觉验证添加到“寄存器”和“登录”表单中。
- 登录尝试失败时要做一些事情。
- 允许用户更改其密码。
- 可能需要一个下午才能找出有关如何实现这些功能的细节,但是根据我们在本教程中涵盖的内容,这都不是您无法触及的。流星为我们付出了艰苦的工作。 如果您想使用本文开发的代码,请查看我设置的GitHub存储库。 经常询问的问题(常见问题解答)关于使用流星
>如何将其他字段添加到流星中的注册形式?
>在流星中的注册表格中添加其他字段非常简单。您可以通过在accounts.createuser方法中添加更多字段来扩展用户配置文件。例如,如果要为用户的全名添加一个字段,则可以这样做: accounts.createuser({用户名:'tastuser',
密码:'密码:' ',
profile:{
fullname:'test用户'
}
});
在此示例中,“ FullName”是添加到用户配置文件中的附加字段。您可以稍后使用Meteor.user()。profile.fullname。
>我如何自定义流星中的登录/注册表格的外观?
Meteor不提供一个内置方式来自定义登录/注册表格的外观。但是,您可以根据需要使用CSS对表格进行样式。您可以将类分配给表单元素,然后在CSS文件中使用这些类以应用样式。另外,您可以使用Bootstrap或Material-ui等UI库来样式表单。如何在Meteor中实现电子邮件验证?
Meteor为电子邮件验证提供内置支持。您可以使用帐户。sendverificiencemail方法向用户发送验证电子邮件。此方法将用户的ID作为参数,并发送带有链接的电子邮件,用户可以单击以验证其电子邮件地址。创建这样的新用户之后,您可以调用此方法:
accounts.createuser({
电子邮件:'test@example.com',
密码:'password'
}, function(err,userId){
> if(err){
//处理错误
} else {
accounts.sendverificitionEmail(userId);
> }
在使用accounts.createuser创建新用户时,您可以提供一个被调用的回调函数如果发生错误,则使用错误对象。此错误对象包含有关出了什么问题的信息。您可以使用此信息向用户显示适当的错误消息。以下是一个示例:
accounts.createuser({
>用户名:'tastuser',
密码:'password'
},function(err){
if(err)if(err){
> console.log('注册期间的错误:',err);
}
>
>我如何将社交登录添加到我的流星应用程序中?>我如何根据流星中的用户身份验证限制对某些路由的访问?
>您可以使用Meteor的内置帐户包以及诸如FlowRouter或Iron Router之类的路由套件来限制基于某些路由的路由器关于用户身份验证。您可以在使用Meteor.userid()或Meteor.user()中检查用户是否已登录。 ?
在流星中,您可以将其他用户数据存储在Meteor.users Collection中的用户文档中。您可以在使用accounts.createuser创建新用户时将其他字段添加到本文档中,也可以使用Meteor.users.update。流星中的控制?
流星无法为基于角色的访问控制提供内置支持,但是您可以使用诸如Alanning:角色之类的软件包将此功能添加到您的应用程序中。此软件包允许您将角色分配给用户,然后在确定是否允许用户执行某个操作时检查这些角色。
>>如何在Meteor中注销用户?可以使用Meteor.logout方法在流星中注销用户。此方法将在客户端上注销当前用户,并使服务器上的登录令牌无效。它还采用一个回调函数,当注销过程完成时,它将在没有参数的情况下被调用。
>以上是用流星创建自定义登录和注册表格的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...
