laravel實(shí)現(xiàn)Auth認(rèn)證,登錄、注冊后的頁面回跳方法
laravel自帶的 auth 認(rèn)證中間件 - app/Http/Middleware/Authenticate.php
查看源碼:
if (Auth::guard($guard)->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest($guard.'/login');
}
}
里面,對于檢測到用戶未登錄,重定向到登錄頁面,使用了 'redirect()->guest()' 的方法!
可查看guest()源碼:
public function guest($path, $status = 302, $headers = [], $secure = null)
{
$this->session->put('url.intended', $this->generator->full()); // 設(shè)置回跳地址
return $this->to($path, $status, $headers, $secure);
}
做了2件事:
1.給session中,設(shè)置了當(dāng)前訪問的url鏈接!(用于我們登錄成功后,回跳回來!)
2.跳轉(zhuǎn)到,我們指定的登錄頁面
接著,自帶的auth機(jī)制中,看看它的登錄成功后的操作:
protected function handleUserWasAuthenticated(Request $request, $throttles)
{
if ($throttles) {
$this->clearLoginAttempts($request);
}
if (method_exists($this, 'authenticated')) {
return $this->authenticated($request, Auth::guard($this->getGuard())->user());
}
return redirect()->intended($this->redirectPath()); // 獲取回跳地址
}
獲取到之前的 '回跳地址',跳轉(zhuǎn)!
這里,我想說明的一點(diǎn)是:
我們有時(shí)間覺得laravel很不好用,主要是我們對它內(nèi)部的東西,并不熟悉。就拿今天說的這個auth認(rèn)證。不用laravel默認(rèn)的登錄注冊可以,但仍需要借助它的Auth系列方法!因?yàn)楹芊奖?。包括這些 redirect() 的方法等。
今天記錄下,這個問題,怕過段時(shí)間又忘記了。登錄、注冊,借助redirect()的 guest() 和 intended(),免去了我們自己借助session或cookie,來記錄頁面的回跳地址,人家已經(jīng)集成了,還很優(yōu)美,為什么不用!
以上這篇laravel實(shí)現(xiàn)Auth認(rèn)證,登錄、注冊后的頁面回跳方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Laravel 5框架學(xué)習(xí)之Eloquent 關(guān)系
Eloquent是Laravel的原始ActiveRecord是實(shí)現(xiàn)的,建立在Laravel的Fluent Query Builder之上的,所以Eloquent類和Fluent類是一樣的,能實(shí)現(xiàn)復(fù)雜的SQL語句和非常直觀表達(dá)出的表與表之間的關(guān)系2015-04-04
php解析url并得到url中的參數(shù)及獲取url參數(shù)的四種方式
本文給大家介紹php解析url并得到url中的參數(shù)及獲取url參數(shù)的四種方式,涉及到將字符串參數(shù)變?yōu)閿?shù)組,將參數(shù)變?yōu)樽址南嚓P(guān)知識,本文代碼簡單易懂,感興趣的朋友一起看看吧2015-10-10
ThinkPHP3.1.x修改成功與失敗跳轉(zhuǎn)頁面的方法
這篇文章主要介紹了ThinkPHP3.1.x修改成功與失敗跳轉(zhuǎn)頁面的方法,涉及thinkPHP底層源文件中相關(guān)跳轉(zhuǎn)代碼的設(shè)置與修改操作技巧,需要的朋友可以參考下2017-09-09
ThinkPHP3.1新特性之動態(tài)設(shè)置自動完成及自動驗(yàn)證示例代碼
這篇文章主要介紹了ThinkPHP3.1的動態(tài)設(shè)置自動完成及自動驗(yàn)證功能,需要的朋友可以參考下2014-06-06

