用流星創建自定義登錄和註冊表格
鑰匙要點
- >用流星創建自定義登錄和註冊表格涉及安裝帳戶通信軟件包,該軟件包將自動創建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.影響因素包括經驗、地理位置、公司規模和特定技能。

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

探索前端中類似VSCode的面板拖拽調整功能的實現在前端開發中,如何實現類似於VSCode...
