99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

四:實現(xiàn)用戶注冊,驗證,登錄

2018-02-24 15:58 更新

原文出處:https://jellybool.com/post/programming-with-yii2-integrating-user-registration

本來打算昨晚寫的這篇教程,但是忙著約會去了,所以現(xiàn)在補上吧。

上一篇寫了一點點Yii2的數(shù)據(jù)庫相關(guān)知識和強大的Gii,這一篇就如上一篇的最后所說的一樣:在Yii2中實現(xiàn)用戶的注冊和登錄。

你可以直接到Github下載源碼,以便可以跟上進度,你也可以重頭開始,一步一步按照這個教程來做。本期的用戶注冊和登錄,我會使用一個很棒的composer package :dektrium/yii2-user,下面就開始我們的故事吧。

用戶的注冊和登錄

在現(xiàn)在的Web應(yīng)用中,幾乎每一個應(yīng)用都會需要用戶注冊,不管是使用的第三方還是自建的注冊登錄系統(tǒng),我們都需要通過某些表單來收集一些必要的用戶數(shù)據(jù)。這些功能在Yii2之中實現(xiàn)起來并不難,而且有很多種方法,好像很多方法都是比較直接,簡單粗暴。這可能是很多人喜歡Yii的原因,就像很多人喜歡PHP一樣,就是簡單粗暴!

其實在Yii2中,它本身就自帶了一個登錄的實現(xiàn):

替代文字

但是我們重復(fù)去制造這個輪子是因為我們需要一些更加實用性的改善,比如:在注冊的時候,發(fā)送驗證郵箱。這幾乎是每一個Web應(yīng)用在注冊的時候都會考慮的內(nèi)容。

如果你安裝的是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"

稍微等待一下,安裝完畢之后就可以進行對應(yīng)的配置了,我們需要配置的文件是config/web.php,找到components,然后在與它同級的位置增加一個modules

'components' => [
        // other settings...
    ],
'modules' => [
        'user' => [
            'class' => 'dektrium\user\Module',
            'confirmWithin' => 21600,
            'cost' => 12,
            'admins' => ['admin']
        ],
    ],

這里還需要將components下面的user部分注釋掉,不然就會一直登錄不了:

 /* 'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],*/

還有最后一步就是執(zhí)行Yii2-User的migration了,在helloYii/目錄下執(zhí)行:

php yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations

然后你會看到:

替代文字

果斷yes

替代文字

Bang,到這里Yii2-User安裝和配置已經(jīng)完成了。

配置SwiftMailer

安裝完Yii2-User之后我們先不急著去想怎么實現(xiàn)登錄和注冊(其實很是比較簡單的),我們之前說過的目標是實現(xiàn)用戶在注冊時候發(fā)送驗證郵件的,這里我們先來配置一下我們的郵箱服務(wù),因為Yii2-User可以直接使用郵箱來進行注冊驗證和密碼找回等功能。在config/web.php找到mailer這個部分:

'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    // 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' => 'yii\swiftmailer\Mailer',
        'viewPath' => '@app/mailer',
        'useFileTransport' => false,
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.live.com',
            'username' => 'jellybool@outlook.com',
            'password' => 'your-password',
            'port' => '587',
            'encryption' => 'tls',
            ],
    ],

這里由于我經(jīng)常使用的是outlook,不要覺得我是奇葩。所以我在這里使用的是outlook的SMTP配置,各位可以根據(jù)自己的需要來進行相應(yīng)的修改。

開始使用Yii2-User

郵箱配置好了之后,我們就可以開始使用Yii2-User了,首先我們來修改一下我們的導(dǎo)航欄,因為我們想實現(xiàn)的就是我們常??吹降脑趯?dǎo)航欄的右側(cè)的注冊和登錄按鈕。在/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']],
            ],
        ]);

上面的啟示就是我們在上一篇文章修改過后的導(dǎo)航欄的代碼,然后用下面的代碼進行替換:

$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幫我們都全部寫好了!然后我們輸入相應(yīng)的信息點擊注冊,之后就會看到這個信息提示頁面:

替代文字

提示新說表明驗證郵箱已經(jīng)發(fā)送,我們登錄qq郵箱去看看,果然:

替代文字

看到這個,相信大家都會很開心,有圖有真相。直接點擊郵件的驗證鏈接,然后就會看到Y(jié)ii2-User給我們反饋的驗證成功的信息:

替代文字

注意右上角,這個時候我們已經(jīng)登錄到應(yīng)用了,如果點擊Logout就會回到登錄頁面:

替代文字

到這里,注冊登錄整個流程就實現(xiàn)完了,不過還有一個我們?nèi)粘i_發(fā)經(jīng)常遇到的情況:忘記密碼。嗯,對于這個情況,Yii2-User直接就提供了這個功能!你可以直接訪問:http://localhost:8999/user/forgot?就可以看到了:

替代文字

嗯,就這樣,很簡單吧。借助Yii2-User這個強大的composer package,我們可以輕松實現(xiàn)用戶注冊,登錄和忘記密碼等各個功能。當然,Yii2-User還有很多特性,我們這里只是用到了很小一部分,你可以直接到文檔中查看:

https://github.com/dektrium/yii2-user/blob/master/docs/README.md

最后希望這一篇文章可以幫你解決一些問題。下一步我肯能會說一下用戶權(quán)限控制和管理,因為這里實現(xiàn)的用戶注冊,所以下一篇顯得是自然而然的。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號