亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

Laravel 5框架學習之用戶認證

2024-05-04 23:34:07
字體:
來源:轉載
供稿:網友

本文給大家分享的是Laravel5框架中用戶認證系統的使用方法,十分的詳細,附上示例,推薦給小伙伴們,有需要的朋友可以參考下。

Laravel 出廠已經帶有了用戶認證系統,我們來看一下 routes.php,如果刪除了,添加上:

 

 
  1. Route::controllers([ 
  2. 'auth' => 'Auth/AuthController'
  3. 'password' => 'Auth/PasswordController' 
  4. ]); 

可以使用 php artisan route:list 查看一下。瀏覽器中訪問 /auth/login,可以看到登陸界面,最好把系統默認的 app.blade.php 中關于 google 的東西注釋起來,要不然你會瘋掉的。

你可以使用 register、login甚至 forget password。

實際注冊一個用戶,提交后失敗了,實際上沒有失敗,只是larave自動跳轉到了 /home,我們已經刪除了這個控制器。你可以使用 tinker 看一下,用戶已經建立了。

在 Auth/AuthController 中實際上使用了 trait,什么是 triat?well,php只支持單繼承,在php5.4中添加了trait,一個trait實際上是一組方法的封裝,你可以把它包含在另一個類中。像是抽象類,你不能直接實例化他。

在 Auth/AuthController 中有對 trait 的引用:

復制代碼代碼如下:

use AuthenticatesAndRegistersUsers;

讓我們找到他,看一下注冊后是怎么跳轉的。他隱藏的挺深的,在 vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesAndregistersUsers.php,wow。

 

 
  1. public function redirectPath() 
  2. if (property_exists($this'redirectPath')) 
  3. return $this->redirectPath; 
  4.  
  5. //如果用戶設置了 redirectTo 屬性,則跳轉到用戶設置的屬性,否則到home 
  6. return property_exists($this'redirectTo') ? $this->redirectTo : '/home'

OK,我們知道了,只要設定 redirectTo 這個屬性就可以自定義注冊后的跳轉了。我們在 Auth/AuthContotroller 中修改:

復制代碼代碼如下:

protected $redirectTo = 'articles';

我們先使用 /auth/logout 確保我們退出,如果出錯了不要害怕,我們沒有默認的主頁,重新訪問:auth/register 新建一個用戶,這次應該ok了。

再次logout,然后使用 login 登陸一下。

現在我們可以刪除 form_partial 中臨時設置的隱藏字段了,然后修改控制器:

 

 
  1. public function store(Requests/ArticleRequest $request) { 
  2. //你可以這樣 
  3. //$request = $request->all(); 
  4. //$request['user_id'] = Auth::id(); 
  5.  
  6. //更簡單的方法 
  7. $article = Article::create($request->all()); 
  8. //laravel 自動完成外鍵關聯 
  9. Auth::user()->articles()->save($article); 
  10.  
  11. return redirect('articles'); 

添加一個文章,然后使用 tinker 查看一下。

中間件

我們當然不希望任何人都能發布文章,至少是登陸用才可以。我們在控制器中添加保護:

 

 
  1. public function create() { 
  2. if (Auth::guest()) { 
  3. return redirect('articles'); 
  4. return view('articles.create'); 

上面的代碼可以工作,有一個問題,我們需要在每一個需要保護的方法中都進行上面的處理,這樣做太傻了,幸好我們有中間件。

中間件可以理解為一個處理管道,中間件在管道中的某一時刻進行處理,這個時刻可以是請求也可以是響應。依據中間件的處理規則,可能將請求重定向,也可能通過請求。

在 app/http/middleware 中包含了三個中間件,名字就可以看出是干什么,好好查看一下,注意,Closure $next 代表了下一個中間件。

在 app/http/kernel.php 中對中間件進行登記。$middleware 段聲明了對所有http都進行處理的中間件,$routeMiddleware 僅僅對路由進行處理,而且你必須顯示的聲明要使用這其中的某一個或幾個中間件。

假設我們想對整個的 ArticlesController 進行保護,我們直接在構造函數中添加中間件:

 

 
  1. public function __construct() { 
  2. $this->middleware('auth'); 

現在,任何方法都收到了保護。

但我們可能不想整個控制器都受到保護,如果只是其中的一兩個方法呢?我們可以這樣處理:

  1. public function __construct() { 
  2. $this->middleware('auth', ['only' => 'create']); 
  3. //當然可以反過來 
  4. //$this->middleware('auth', ['except' => 'index']); 


我們不一定在控制器的構造函數中引入中間件,我們可以直接在路由中聲明:

復制代碼代碼如下:

Route::get('about', ['middleware' => 'auth', 'uses' =>'PagesController@about']);

在 kernel.php 中提供的系統中間件,比如 'Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode' 是可以讓我們進入到維護模式,比如系統上線了,但現在需要臨時關閉一段時間進行處理,我們可以在命令行進行處理,看一下這個中間件的工作:

復制代碼代碼如下:

php artisan down

訪問一下網站,可以看到任何 url 的請求都是馬上回來。網站上線:

復制代碼代碼如下:

php artisan up

我們來做一個自己的中間件:

復制代碼代碼如下:

php artisan make:middleware Demo

然后添加代碼:

 

 
  1. public function handle($request, Closure $next
  2. //如果請求中含有 foo,我們就回到控制器首頁 
  3. if ($request->has('foo')) { 
  4. return redirect('articles'); 
  5.  
  6. return $next($request); 

如果希望在全部的請求使用中間件,需要在 kernel.php 中的 $middleware 中登記:

 

 
  1. protected $middleware = [ 
  2. ... 
  3. 'App/Http/Middleware/Demo'
  4.  
  5. ]; 

現在我們可以測試一下,假設我們訪問 /articles/create?foo=bar ,我們被重定向到了首頁。

讓我們去除這個顯示中間件,我們來創建一個真正有用的中間件。假設我們想保護某個頁面,這個頁面必須是管理者才能訪問的。

復制代碼代碼如下:

php artisan make:middleware RedirectIfNotAManager

我們來添加處理代碼:

 

 
  1. public function handle($request, Closure $next
  2. if (!$request->user() || !$request->user()->isATeamManager()) { 
  3. return redirect('articles'); 
  4.  
  5. return $next($request); 

下面修改我們的模型:

 

 
  1. public function isATeamManager() { 
  2. return false; 

簡單起見,我們直接返回false。這次我們把中間件放置在 kernel.php 中的$routeMiddleware 中。

 

 
  1. protected $routeMiddleware = [ 
  2. ... 
  3. 'manager' => 'App/Http/Middleware/RedirectIfNotAManager'
  4. ]; 

我們做一個測試路由測試一下:

 

 
  1. Route::get('foo', ['middleware' => 'manager'function() { 
  2. return 'This page may only be viewed by manager'
  3. }]); 

guest身份訪問或者登錄身份訪問都會返回主頁,但是如果修改 isATeamManager() 返回 true,登錄身份訪問可以看到返回的信息。

以上就是本文所述的全部內容,希望對大家熟悉Laravel5框架能夠有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久一区二区| 日韩av123| 中文字幕久久久| 国产精品美女主播在线观看纯欲| 亚洲国产成人爱av在线播放| 久久国产精品久久久久久| 欧美一区二区三区……| 欧美激情亚洲自拍| 一个人看的www久久| 久久久亚洲成人| 日韩av三级在线观看| 91系列在线播放| 亚洲日韩中文字幕| 一本色道久久88精品综合| 日韩av理论片| 91综合免费在线| 亚洲国产成人精品电影| 欧美大片免费观看在线观看网站推荐| 日韩精品久久久久久福利| 国产精品青草久久久久福利99| 国产在线视频欧美| 国产成人av网址| 日本欧美在线视频| 精品无人区太爽高潮在线播放| 欧美激情在线观看| 亚洲精品福利在线| 欧美高清videos高潮hd| 亚洲精品视频在线播放| 亚洲国产一区二区三区在线观看| 不卡中文字幕av| 国产精品男女猛烈高潮激情| 精品av在线播放| 亚洲视频网站在线观看| 亚洲精品国精品久久99热一| 插插插亚洲综合网| 亚洲全黄一级网站| 日本亚洲欧洲色α| 亚洲91av视频| 国产九九精品视频| 国产精品视频xxxx| 欧美精品九九久久| 国产精品国产自产拍高清av水多| 欧美日韩中文字幕在线视频| 国产成人在线播放| 久久久久久久国产精品视频| 亚洲乱码国产乱码精品精| 国产美女精品视频| 久久久女女女女999久久| 亚洲欧洲成视频免费观看| 亚洲变态欧美另类捆绑| 精品中文字幕在线观看| 不卡av电影院| 精品国产一区二区三区久久狼黑人| 欧美一区三区三区高中清蜜桃| 日韩av观看网址| 性欧美xxxx交| 欧美电影免费观看高清完整| 欧美裸体xxxx极品少妇| 日韩在线视频播放| 亚洲一区二区久久久久久久| 欧美放荡办公室videos4k| 日韩av网站在线| 欧美在线视频一区| 福利微拍一区二区| 一个人看的www久久| 亚洲久久久久久久久久久| 欧美一区深夜视频| 国产99久久精品一区二区永久免费| 欧美成人激情视频免费观看| 色yeye香蕉凹凸一区二区av| 丝袜一区二区三区| 98视频在线噜噜噜国产| 欧美午夜精品久久久久久浪潮| 国产欧美一区二区三区久久| 欧美亚洲另类在线| 欧美电影免费播放| 久久久亚洲影院你懂的| 色偷偷88888欧美精品久久久| 日韩精品久久久久久久玫瑰园| 97在线精品国自产拍中文| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲精品短视频| 91香蕉国产在线观看| 亚洲一区制服诱惑| 国产精品香蕉在线观看| 日韩精品一区二区三区第95| 日韩色av导航| 日韩在线视频中文字幕| 91午夜在线播放| 久久久久久高潮国产精品视| 亚洲一区二区久久久久久久| 欧美大片免费观看在线观看网站推荐| 福利一区视频在线观看| 日韩激情片免费| 欧美亚洲视频在线看网址| 亚洲精品成人久久久| 国产精品久久久久久久电影| 久久久视频免费观看| 欧美有码在线观看| 一区二区欧美激情| 欧美极品美女视频网站在线观看免费| 国产精品久久一区| 久久精品亚洲热| 国内精品久久久久影院 日本资源| 日韩精品在线免费观看| 中文字幕亚洲天堂| 亚洲激情成人网| 国产亚洲精品日韩| 欧美日韩xxx| 久久免费视频在线观看| 亚洲伊人一本大道中文字幕| 国产精品久久久久久久久久三级| 午夜精品久久久久久99热软件| 欧洲亚洲在线视频| 亚洲视频电影图片偷拍一区| 日韩中文字幕视频在线观看| 欧美大全免费观看电视剧大泉洋| 精品久久久久久久久久久久久| 成人激情电影一区二区| 中文字幕精品www乱入免费视频| 91成人免费观看网站| 浅井舞香一区二区| 精品香蕉一区二区三区| 精品国模在线视频| 成人精品一区二区三区电影黑人| 欧美极品美女视频网站在线观看免费| 国产精品久久久久久婷婷天堂| 亚洲跨种族黑人xxx| 亚洲性猛交xxxxwww| 成人xxxx视频| 日韩久久免费电影| 国产成人一区二区三区小说| 欧美高跟鞋交xxxxhd| 成人精品久久一区二区三区| 日韩精品有码在线观看| 欧美激情一级欧美精品| 日韩一区二区欧美| 日本不卡免费高清视频| 欧美黑人视频一区| 亚洲色图色老头| 国产极品jizzhd欧美| 国产在线观看91精品一区| 九九热精品视频在线播放| 精品国产自在精品国产浪潮| 成人激情视频网| 亚洲精品资源美女情侣酒店| 亚洲天堂视频在线观看| 国产色综合天天综合网| 国产精品海角社区在线观看| 久久久久一本一区二区青青蜜月| 成人日韩在线电影| 韩国三级日本三级少妇99| 成人性生交大片免费看视频直播| 欧美日韩亚洲精品内裤| 中日韩午夜理伦电影免费| 国产精品小说在线| 亚洲欧美自拍一区| 亚洲精品久久久久中文字幕二区| 亚洲天堂网站在线观看视频| 日韩亚洲国产中文字幕| 久久手机免费视频| 久久久久久尹人网香蕉| 欧美一级片久久久久久久| 最近更新的2019中文字幕|