Laravel Authenticated Redirect 認證導入教學

前言

這篇文章我要分享如果改名登入後的預設路徑。目前登錄後使用者是去/home這個路徑。但是我的Application有3種不同使用者(工地主任,採購單位,管理者),每一個不同的role登陸後要進入他們各自的後台。要達到這個功能我們要改兩個地方: LoginController 跟RedirectIfAuthenticated。

LoginController 這裡負責登陸後的路徑。我們要改redirectTo這個method。以下是程式碼。首先我們要取得使用者權限(role),然後用一個簡單的switch切換每一個使用者到他們各自的後台(Dashboard)。

這一段程式碼還蠻簡單的,應該一看就懂。

// LoginController.php
// protected $redirectTo = RouteServiceProvider::HOME;
    public function redirectTo()
    {
        // User role
        $role = Auth::user()->role;

        // Check user role
        switch ($role) {
            case 'manager':
                return '/manager/dashboard';
                break;
            case 'procurement':
                return '/procurement/dashboard';
                break;
            case 'site-manager':
                return '/site-manager/dashboard';
                break;
            default:
                return '/login';
                break;
        }
    }

第二個部分是RedirectIfAuthenticated.php, 這裡負責的是如果你已經登陸了(Authenticated)。你的預設網頁是什麼。這邊寫法跟上方差不多,只是這裡是用if statement。Auth::guard($guard)->check() 是檢查使用者是否已經登陸,那後面是檢查角色(role)是什麼。

所以這樣子寫完之後,登陸後。之後再回來網頁,預設網頁就是使用的後台。

```php
// 原本
public function handle($request, Closure $next, $guard = null)
	if (Auth::guard($guard)->check()) {
		return redirect(RouteServiceProvider::HOME);
	}
}

// 改成
public function handle($request, Closure $next, $guard = null)
{
  if (Auth::guard($guard)->check() && Auth::user()->role == 'manager') {
    return redirect()->route('manager-dashboard');
  }
  if (Auth::guard($guard)->check() && Auth::user()->role == 'procurement') {
    return redirect()->route('procurement-dashboard');
  }
  if (Auth::guard($guard)->check() && Auth::user()->role == 'site-manager') {
    return redirect()->route('site-manager-dashboard');
  }

  return $next($request);
}
```

這一篇文章教學就到這裡,希望有幫到你。

影片教學

資源

Laravel: Redirect different user roles differently

Learn how to redirect authenticated users to corresponding path in Laravel


關於作者:Danny Huang

大家好,我是Danny,是位熱愛程式的前端工程師,具有豐富工作與接案經驗。我在這裡會陸續推出一些網頁開發,線上行銷的文章。 如果喜歡這方面的文章可以加入email list。

鎰誠數位

我們擁有網頁工程師的背景,對於程式品質具有極高的自我要求。在電子商務及數位行銷上更有著豐富的經驗。

聯絡我們

  • 高雄市三民區壽昌路197號12F
  • 0952-823-328
  • bigboycancode@gmail.com
2018 © Copyright 鎰誠 All rights Reserved.