摘要:開始使用郵箱配置好了之后,我們就可以開始使用了,首先我們來修改一下我們的導航欄,因為我們想實現的就是我們常常看到的在導航欄的右側的注冊和登錄按鈕。
原文來自: https://jellybool.com/post/programming-with-yii2-integrating-user-regi...
本來打算昨晚寫的這篇教程,但是忙著約會去了,所以現在補上吧。
上一篇寫了一點點Yii2的數據庫相關知識和強大的Gii,這一篇就如上一篇的最后所說的一樣:在Yii2中實現用戶的注冊和登錄。
你可以直接到Github下載源碼,以便可以跟上進度,你也可以重頭開始,一步一步按照這個教程來做。本期的用戶注冊和登錄,我會使用一個很棒的composer package :dektrium/yii2-user,下面就開始我們的故事吧。
用戶的注冊和登錄在現在的Web應用中,幾乎每一個應用都會需要用戶注冊,不管是使用的第三方還是自建的注冊登錄系統,我們都需要通過某些表單來收集一些必要的用戶數據。這些功能在Yii2之中實現起來并不難,而且有很多種方法,好像很多方法都是比較直接,簡單粗暴。這可能是很多人喜歡Yii的原因,就像很多人喜歡PHP一樣,就是簡單粗暴!
其實在Yii2中,它本身就自帶了一個登錄的實現:
但是我們重復去制造這個輪子是因為我們需要一些更加實用性的改善,比如:在注冊的時候,發送驗證郵箱。這幾乎是每一個Web應用在注冊的時候都會考慮的內容。
如果你安裝的是Yii2 Advanced Application Template,那么Yii2其實就把這些功能都寫好了,而且你還會有一個后臺管理的模塊。但是我們的教程是基于Yii2"s Basic Application Template,而且我提倡大家來動手造一下這個輪子。
帶上我們的作案工具,我們要來造輪子了。
安裝Yii2-User我們這里的Yii2-User安裝步驟參照Yii2-User的官方安裝文檔。我們直接使用composer來進行安裝:
composer require "dektrium/yii2-user:0.9.*@dev"
稍微等待一下,安裝完畢之后就可以進行對應的配置了,我們需要配置的文件是config/web.php,找到components,然后在與它同級的位置增加一個modules:
"components" => [ // other settings... ], "modules" => [ "user" => [ "class" => "dektriumuserModule", "confirmWithin" => 21600, "cost" => 12, "admins" => ["admin"] ], ],
這里還需要將components下面的user部分注釋掉,不然就會一直登錄不了:
``` /* "user" => [ "identityClass" => "appmodelsUser", "enableAutoLogin" => true, ],*/ ```
還有最后一步就是執行Yii2-User的migration了,在helloYii/目錄下執行:
php yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations
然后你會看到:
果斷yes
Bang,到這里Yii2-User安裝和配置已經完成了。
配置SwiftMailer安裝完Yii2-User之后我們先不急著去想怎么實現登錄和注冊(其實很是比較簡單的),我們之前說過的目標是實現用戶在注冊時候發送驗證郵件的,這里我們先來配置一下我們的郵箱服務,因為Yii2-User可以直接使用郵箱來進行注冊驗證和密碼找回等功能。在config/web.php找到mailer這個部分:
"mailer" => [ "class" => "yiiswiftmailerMailer", // send all mails to a file by default. You have to set // "useFileTransport" to false and configure a transport // for the mailer to send real emails. "useFileTransport" => true, ],
修改成我們下面的這個樣子:
"mailer" => [ "class" => "yiiswiftmailerMailer", "viewPath" => "@app/mailer", "useFileTransport" => false, "transport" => [ "class" => "Swift_SmtpTransport", "host" => "smtp.live.com", "username" => "jellybool@outlook.com", "password" => "your-password", "port" => "587", "encryption" => "tls", ], ],
這里由于我經常使用的是outlook,不要覺得我是奇葩。所以我在這里使用的是outlook的SMTP配置,各位可以根據自己的需要來進行相應的修改。
開始使用Yii2-User郵箱配置好了之后,我們就可以開始使用Yii2-User了,首先我們來修改一下我們的導航欄,因為我們想實現的就是我們常常看到的在導航欄的右側的注冊和登錄按鈕。在/views/layouts/main.php找到:
echo Nav::widget([ "options" => ["class" => "navbar-nav navbar-right"], "items" => [ ["label" => "Home", "url" => ["/site/index"]], [ "label" => "Status", "items" => [ ["label" => "View", "url" => ["/status/index"]], ["label" => "Create", "url" => ["/status/create"]], ], ], ["label" => "About", "url" => ["/site/about"]], ["label" => "Contact", "url" => ["/site/contact"]], Yii::$app->user->isGuest ? ["label" => "Login", "url" => ["/site/login"]] : ["label" => "Logout (" . Yii::$app->user->identity->username . ")", "url" => ["/site/logout"], "linkOptions" => ["data-method" => "post"]], ], ]);
上面的啟示就是我們在上一篇文章修改過后的導航欄的代碼,然后用下面的代碼進行替換:
$navItems=[ ["label" => "Home", "url" => ["/site/index"]], ["label" => "Status", "url" => ["/status/index"]], ["label" => "About", "url" => ["/site/about"]], ["label" => "Contact", "url" => ["/site/contact"]] ]; if (Yii::$app->user->isGuest) { array_push($navItems,["label" => "Sign In", "url" => ["/user/login"]],["label" => "Sign Up", "url" => ["/user/register"]]); } else { array_push($navItems,["label" => "Logout (" . Yii::$app->user->identity->username . ")", "url" => ["/site/logout"], "linkOptions" => ["data-method" => "post"]] ); } echo Nav::widget([ "options" => ["class" => "navbar-nav navbar-right"], "items" => $navItems, ]);
修改完成之后,我們直接訪問:http://localhost:8999/user/register,你將會看到下面的類似頁面:
有沒有覺得很神奇?沒錯Yii2-User幫我們都全部寫好了!然后我們輸入相應的信息點擊注冊,之后就會看到這個信息提示頁面:
提示新說表明驗證郵箱已經發送,我們登錄qq郵箱去看看,果然:
看到這個,相信大家都會很開心,有圖有真相。直接點擊郵件的驗證鏈接,然后就會看到Yii2-User給我們反饋的驗證成功的信息:
注意右上角,這個時候我們已經登錄到應用了,如果點擊Logout就會回到登錄頁面:
到這里,注冊登錄整個流程就實現完了,不過還有一個我們日常開發經常遇到的情況:忘記密碼。嗯,對于這個情況,Yii2-User直接就提供了這個功能!你可以直接訪問:http://localhost:8999/user/forgot 就可以看到了:
嗯,就這樣,很簡單吧。借助Yii2-User這個強大的composer package,我們可以輕松實現用戶注冊,登錄和忘記密碼等各個功能。當然,Yii2-User還有很多特性,我們這里只是用到了很小一部分,你可以直接到文檔中查看:
https://github.com/dektrium/yii2-user/blob/master/docs/README.md
最后希望這一篇文章可以幫你解決一些問題。下一步我肯能會說一下用戶權限控制和管理,因為這里實現的用戶注冊,所以下一篇顯得是自然而然的。
源碼會放在 Github:https://github.com/JellyBool/helloYii
Happy Hacking
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21046.html
摘要:原文來自上一篇文章講了用戶的注冊,驗證和登錄,這一篇文章按照約定來說說之中的用戶和權限控制。探尋上面的一些列設置和代碼更改,已經實現了一小部分的用戶控制登錄的用戶才能發表。 原文來自: https://jellybool.com/post/programming-with-yii2-user-access-controls 上一篇文章講了用戶的注冊,驗證和登錄,這一篇文章按照...
摘要:原文來自這一篇文章的開頭就無需多言了,緊接著上一篇的內容和計劃,這一篇我們來說說的和。,那既然這樣,我們就來實現一下唄。所以我們首先需要將表中的幾條數據刪掉。下一節再詳細講講吧,這一節寫下來貌似要說的實在有點多。 原文來自:https://jellybool.com/post/programming-with-yii2-behaviors-and-validat... 這一篇...
摘要:但是這還沒有完,因為我們還需要對我們的做一些些小改動,主要是在的改動在這里,我們添加下面這兩行來保障我們在插入數據的時候,和不為空。 原文來自:https://jellybool.com/post/programming-with-yii2-working-with-the-data... 上一篇文章我們理了一下Yii2的MVC,Forms和Layouts,這篇文章就直接按照...
摘要:而且很明顯地,我們可以看到,一旦輸入框在失去焦點的時候,如果里面沒有輸入任何內容,每個輸入框就會有相應的錯誤提示,用戶體驗很不錯。 原文來自: https://jellybool.com/post/programming-with-yii2-exploring-mvc-forms-a... 上一篇文章我們簡單地實現了Yii2框架安裝和Hello World,而在這一篇文章當中...
摘要:在用戶注冊的時候是為空的,當用戶忘記密碼在登錄頁面點擊后生成的,用來給用法發送郵件后重置密碼時進行驗證。如有錯誤,不吝賜教。 注冊 在advanced模板中,進入frontend/index.php?r=site%2Fsignup頁面,可以看到框架的注冊頁面showImg(https://segmentfault.com/img/bVDEaZ?w=300&h=235); 填寫完User...
閱讀 2538·2023-04-26 00:57
閱讀 911·2021-11-25 09:43
閱讀 2221·2021-11-11 16:55
閱讀 2207·2019-08-30 15:53
閱讀 3592·2019-08-30 15:52
閱讀 1459·2019-08-30 14:10
閱讀 3379·2019-08-30 13:22
閱讀 1209·2019-08-29 11:18