成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

laravel5.1 -- 獲取用戶的登錄狀態(tài),事件、監(jiān)聽(tīng)、中間件的簡(jiǎn)單應(yīng)用

gityuan / 652人閱讀

摘要:現(xiàn)在我們通過(guò)一個(gè)用戶登錄來(lái)講解一個(gè)事件,監(jiān)聽(tīng)一個(gè)事件并觸發(fā)一些操作的全過(guò)程。首先,在中注冊(cè)事件與監(jiān)聽(tīng)器之間的映射關(guān)系。在中,我們把用戶狀態(tài)分為,,根據(jù)登錄用戶的不同狀態(tài)來(lái)顯示出不同的內(nèi)容。

事件存在很多方面,比如登錄、購(gòu)買(mǎi)商品、搜索、查看文章等等。 監(jiān)聽(tīng)器監(jiān)聽(tīng)到事件發(fā)生后,會(huì)執(zhí)行一些操作。Laravel使用觀察者模式來(lái)實(shí)現(xiàn)這種監(jiān)聽(tīng)機(jī)制。 現(xiàn)在我們通過(guò)一個(gè)用戶登錄來(lái)講解一個(gè)事件,監(jiān)聽(tīng)一個(gè)事件并觸發(fā)一些操作的全過(guò)程。

Registering Events / Listeners

首先,在App/Providers/EventServiceProvider.php中注冊(cè)事件與監(jiān)聽(tīng)器之間的映射關(guān)系。下面的三個(gè)映射關(guān)系中我們只用到了LoginEventLoginSuccess

protected $listen = [
    "AppEventsLoginEvent" => ["AppListenersLoginSuccess"],
    "AppEventsLogoutEvent" => ["AppListenersLogoutSuccess"],
    "AppEventsUserAccess" => ["AppListenersUserAccess"]
];

然后,在根目錄下執(zhí)行artisan

$ php artisan event:generate

執(zhí)行命令成功后,分別會(huì)在App/EventsAppListeners下生成App/Events/LoginEventApp/Listeners/LoginSuccessphp文件

定義事件類

LoginEvent事件中什么都沒(méi)有改動(dòng),也不需要改動(dòng)

定義監(jiān)聽(tīng)器

現(xiàn)在在App/Listeners中有了一個(gè)LoginSuccess.php監(jiān)聽(tīng)器,為了以后方面,我們?cè)?b>App/Listeners中新建一個(gè)基礎(chǔ)的監(jiān)聽(tīng)類ListenerBase.php

statut = new Statut;
    }
}
?>

ListenerBase.php中實(shí)例化了一個(gè)Statut類,這個(gè)Statut類在App/Services文件夾下,下面我們會(huì)用到。


現(xiàn)在來(lái)到App/Listeners/LoginSuccess.php

statut->setLoginStatut($event);
    }
}

LoginSuccess繼承了ListenerBase, handle方法中$this->statut->setLoginStatut獲取了登錄用戶的狀態(tài)

Statut.php

App/Services中新建php文件Statut.php,再此文件中,主要定義了獲取當(dāng)前登錄用戶的狀態(tài)的幾個(gè)方法,當(dāng)觸發(fā)事件后,會(huì)執(zhí)行Statut.php文件中的操作

put("statut", auth()->user()->role->slug);//auth()->user()在用戶登錄完成后才會(huì)有值
    }

    /**
    * Set visitor statut
    *
    * @return void
    */
    public function setVisitorStatut(){
        session()->put("statut", "visitor");
    }

    /**
    * Set the statut
    *
    * @return void
    */
    public function setStatut(){
        if(!session()->has("statut")){
            session()->put("statut", auth()->check() ? auth()->user()->role->slug : "visitor");
        }
    }
}
?>

好了,事件和監(jiān)聽(tīng)器完成之后,就需要觸發(fā)操作了,這里我們用中間件(Middleware)

Defining Middleware

使用artisan命令來(lái)創(chuàng)建中間件 App/Http/Middleware/App.php

$ php artisan make:middleware App

執(zhí)行成功后,使用全局方法event


最后,再將App中間件注冊(cè)到kernel.php中


完成上面的操作后,就可以獲取用戶的登錄狀態(tài)了。在Statut.php中,我們把用戶狀態(tài)分為visitor,admin,user,根據(jù)登錄用戶的不同狀態(tài)來(lái)顯示出不同的內(nèi)容。例如,如果是admin,則他可以進(jìn)入后臺(tái)并執(zhí)行一些操作,如果是user或者visitor,那么他只能瀏覽一些頁(yè)面


總結(jié):

了解自己想要做什么,達(dá)到什么樣的目的,操作的過(guò)程中,思路應(yīng)清晰。


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/35828.html

相關(guān)文章

  • laravel5.1 -- 獲取用戶登錄狀態(tài),事件、監(jiān)聽(tīng)、間件簡(jiǎn)單應(yīng)用

    摘要:現(xiàn)在我們通過(guò)一個(gè)用戶登錄來(lái)講解一個(gè)事件,監(jiān)聽(tīng)一個(gè)事件并觸發(fā)一些操作的全過(guò)程。首先,在中注冊(cè)事件與監(jiān)聽(tīng)器之間的映射關(guān)系。在中,我們把用戶狀態(tài)分為,,根據(jù)登錄用戶的不同狀態(tài)來(lái)顯示出不同的內(nèi)容。 事件存在很多方面,比如登錄、購(gòu)買(mǎi)商品、搜索、查看文章等等。 監(jiān)聽(tīng)器監(jiān)聽(tīng)到事件發(fā)生后,會(huì)執(zhí)行一些操作。Laravel使用觀察者模式來(lái)實(shí)現(xiàn)這種監(jiān)聽(tīng)機(jī)制。 現(xiàn)在我們通過(guò)一個(gè)用戶登錄來(lái)講解一個(gè)事件,監(jiān)聽(tīng)一個(gè)...

    nicercode 評(píng)論0 收藏0
  • Laravel5.1 實(shí)現(xiàn)第三方登錄認(rèn)證(包括微博、QQ、微信、豆瓣)

    摘要:目前支持的認(rèn)證有。英文不好的同學(xué)比如我,下面是中文文檔通過(guò)擴(kuò)展的,實(shí)現(xiàn)了很多第三方認(rèn)證。國(guó)內(nèi)的有微博微信豆瓣。至于和的具體值,這個(gè)是由新浪微博分發(fā)給你的,在新浪微博的授權(quán)回調(diào)頁(yè)中填寫(xiě)。 前言 第三方登錄認(rèn)證能簡(jiǎn)化用戶登錄/注冊(cè)的操作,降低用戶登錄/注冊(cè)的門(mén)檻,對(duì)提高應(yīng)用的用戶轉(zhuǎn)化率很有幫助。 Socialite Laravel 為我們提供了簡(jiǎn)單、易用的方式,使用 Laravel Soc...

    nifhlheimr 評(píng)論0 收藏0
  • 關(guān)于laravel5.1安裝心得

    摘要:完全沒(méi)有基礎(chǔ)的人基本上很難安裝并使用成功。目錄用于存放的依賴包。開(kāi)啟訪問(wèn)即可看到有的字樣出現(xiàn),代表安裝配置成功。 最近開(kāi)始開(kāi)坑,玩php,而且laravel最近很熱門(mén),所以就這樣了。小白php直接接觸框架真的不容易,以前python接觸的django框架看官網(wǎng)文檔覺(jué)得寫(xiě)得勉強(qiáng)吧,不是太好看,直到看到laravel的文檔才知道什么叫變態(tài)。完全沒(méi)有基礎(chǔ)的人基本上很難安裝并使用成功。而且即使...

    vibiu 評(píng)論0 收藏0
  • React專題:react,redux以及react-redux常見(jiàn)一些面試題

    摘要:我們可以為元素添加屬性然后在回調(diào)函數(shù)中接受該元素在樹(shù)中的句柄,該值會(huì)作為回調(diào)函數(shù)的第一個(gè)參數(shù)返回。使用最常見(jiàn)的用法就是傳入一個(gè)對(duì)象。單向數(shù)據(jù)流,比較有序,有便于管理,它隨著視圖庫(kù)的開(kāi)發(fā)而被概念化。 面試中問(wèn)框架,經(jīng)常會(huì)問(wèn)到一些原理性的東西,明明一直在用,也知道怎么用, 但面試時(shí)卻答不上來(lái),也是挺尷尬的,就干脆把react相關(guān)的問(wèn)題查了下資料,再按自己的理解整理了下這些答案。 reac...

    darcrand 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

gityuan

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<