1. 程式人生 > >Laravel 5.3 不同使用者表登入認證-優化

Laravel 5.3 不同使用者表登入認證-優化

需要優化的地方:不需要新增中介軟體,【後臺管理認證中介軟體】部分全部去掉,使用框架自帶的中介軟體傳參就行了。

Admin/LoginController.php 中修改中介軟體:

$this->middleware('guest.admin', ['except' => 'logout']);

修改為:

$this->middleware('guest:admin', ['except' => 'logout']);

僅僅改了個冒號,冒號後面即為引數,給預設的guest中介軟體傳參。

修改guest中介軟體App\Http\Middleware\RedirectIfAuthenticated.php:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        switch ($guard) {
            case 'admin':
                return redirect('/admin');
                break;

            default:
                return redirect('/home');
                break
; } } return $next($request); }

根據guard名來重定向,已登陸時,訪問登入頁面跳轉的地址。

修改路由:

Route::group(['middleware' => 'auth.admin'], function () {
    Route::get('/', 'Admin\[email protected]');
});

為:

Route::group(['middleware' => 'auth:admin'], function () {
    Route::get('/', 'Admin\
[email protected]
'
)
; }
);

僅僅改了個冒號,冒號後面即為引數,給預設的auth中介軟體傳參。

修改App\Exceptions\Handler.php的unauthenticated()方法:

protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }

        $guards = $exception->guards();
        $guard = ! empty($guards) ? $guards[0] : null;

        switch ($guard) {
            case 'admin':
                return redirect()->guest('admin/login');
                break;

            default:
                return redirect()->guest('login');
                break;
        }
    }

這裡也是根據guard名來重定向,未登陸時,訪問需要登陸的頁面跳轉的地址。

注:
預設的auth中介軟體(Illuminate\Auth\Middleware\Authenticate),在驗證失敗後,會丟擲異常

throw new AuthenticationException('Unauthenticated.', $guards);

丟擲異常後會觸發App\Exceptions\Handler類的unauthenticated()方法。

相關推薦

Laravel 5.3 不同使用者登入認證-優化

需要優化的地方:不需要新增中介軟體,【後臺管理認證中介軟體】部分全部去掉,使用框架自帶的中介軟體傳參就行了。 Admin/LoginController.php 中修改中介軟體: $this->middleware('guest.adm

Laravel 5.3 使用內置的 Auth 組件實現多用戶認證功能

where rules turn number model err 種類型 ddl handler https://blog.csdn.net/kevinbai_cn/article/details/54341779 概述 在開發中,我們經常會遇到多種類型的用戶的認證問題,

Laravel 5.3 使用內建的 Auth 元件實現多使用者認證功能以及登陸才能訪問後臺的功能的一種實現方法

概述 在開發中,我們經常會遇到多種型別的使用者的認證問題,比如後臺的管理員和前臺的普通使用者。Laravel 5.3 內建的 Auth 元件已經能很好的滿足這項需求,下面大概記錄下使用方法。 另外,後臺頁面常常需要登入才能訪問,為了完成類似的功能,大家一般都

laravel 5.3 單使用者登入簡單實現

需求描述 當前使用者只能在一個地方登入,即同一賬號不能再2個以上視窗登入,後登入者踢出前登入者。 設計思路 在使用者資料表中新增1個欄位,記錄當前登入用的session_id,當用戶登入的時候把session_id儲存到資料庫中,然後在中介軟體認證里加判斷,判斷當前使用者s

Laravel 5.4建站06--API 認證系統 Passport

檢查 resp alt pre tails provide 函數 onf gis 介紹 在 Laravel 中,實現基於傳統表單的登陸和授權已經非常簡單,但是如何滿足 API 場景下的授權需求呢?在 API 場景裏通常通過令牌來實現用戶授權,而非維護請求之間的 Sessio

5.3 將users添加到xadmin後臺

ner list brush radmin gis time AI object bject 在users模塊中添加adminx.py文件,是xadmin後臺管理默認的文件名,內容是: from .models import EmailVerifyRecord, Bann

Laravel 5.3+ Auth::routes 驗證路徑

Laravel 5.3+ 開始,添加了Auth()::routes()路徑組,其中註冊了常見的驗證路徑,例如註冊,登入登出,以及密碼修改。 在web.php中,新增如下程式碼: Auth()::routes() 即可使用這些路徑。 而要檢視這些路徑具體包含了哪些,我們可以

Laravel 5.3+ 如何定義API路徑(取消CSRF保護)

從Laravel 5.3+開始,API路徑被放入了routes/api.php中。我們絕大多數的路徑其實都會在web.php中定義,因為在web.php中定義的路徑預設有CSRF保護,而API路徑預設沒有CSRF保護。在Laravel官網文件中寫到: Any HTML forms poi

laravel 5.3 CURD

初學者的 CURD 控制器下的程式碼 路由設定 新增 /* * 新增 */ public function insert(){ input::all('name'); $name=$_PO

laravel 5.3 route.php檔案

在Laravel 5.3中,app/Http/routes.php檔案被移動到routes目錄下,並且被分割成兩個檔案:web.php和api.php。web.php中的路由應用了web中介軟體組,而

laravel-blog:由 Laravel 5.3 強力驅動的快速、優雅、強大的部落格系統

Laravel Blog 快速,優雅, 強大的部落格系統,由Laravel5.3強力驅動。點選 這裡 檢視. 這是一個我個人使用的部落格,也曾經使用Hexo 和 github pages 搭過網站,都是都不靈活。因此用Laravel寫了這個部落格。 我想說的是Laravel是最好的php框架。 後續

Laravel 5.3+ 自動新增建立時間與更新時間詳解

本文已經遷移至我的個人技術部落格: 在Laravel 5.3之前,migrations中的$table->timestamps()所建立的created_at及updated_at兩個col

Laravel 5.3 使用者驗證原始碼探究 (一) 路由與註冊

簡介 Laravel 從 5.2 開始就有了開箱即用的使用者驗證,5.3 又在 5.2 的基礎上又有了一些改變。為了深入瞭解具體的使用者驗證實現,只能深入 Laravel 的原始碼,探究使用者驗證是怎麼處理的。 開始 安裝好 Laravel 5.3 的

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(5.3登入功能的實現,豐富資料、建立關聯

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_CODE] Script Date: 2016/5/17 9:30:01 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET

51nod 1010 只包含因子2 3 5的數(打+排序+二分)

F12 alt bbb art 打表 names syn tdi iostream 1010 只包含因子2 3 5的數 基準時間限制:1 秒 空間限制:131072 KB 分值: 10 難度:2級算法題 收藏 關註 取消關註 K的因子中只包含2 3

Laravel 5.5 FormRequest 自定義單請求驗證類

根目錄 use his extends 數據 不一致 不能 登錄模塊 能夠 1、把表單驗證邏輯寫在Controller中,這是最基礎的方法,但是不好維護,如: 1 namespace App\Http\Controllers\Admin; 2 3 use Illu

Laravel 5.2 使用 JWT 完成多使用者認證 | Laravel China 社群 - 高品質的 Laravel 開發者社群 - Powered by PHPHub

Json Web Token# JWT代表Json Web Token.JWT能有效地進行身份驗證並連線前後端。 降地耦合性,取代session,進一步實現前後端分離 減少伺服器的壓力 可以很簡單的實現單點登入 我在實現這個功能的時候查到了這個擴充套件“tymon/jw

springboot1.5.3+redis3.4-cluster叢集+shiro1.3.2+springcloud+nginx登入後shiro的subject為null問題解決

一、 問題描述 線上環境:springboot1.5.3+redis3.4-cluster叢集+shiro1.3.2+springcloud+nginx 本地開發:springboot1.5.3+redis3.4-cluster叢集+shiro1.3.2 本地開發時,一切正常。 上線後,

55.3 ElasticSearch-head操作結構

1,建立表結構。使用PUT請求 {   "mapping": {     "first": {       "properties": {       

線性的合併已知兩個集合A和B,現要求一個新的集合A=A∪B。例如,設A=(7,5,3,11),B=(2,6,3),合併後A=(7,5,3,11,2,6)。

#include<iostream> using namespace std; #define MAXSIZE 100 #define OK 1 #define ERROR -1 #define OVERFLOW -2 #define  MAXSIZE 100 &n