iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0

因為要使用Laravel 的auth starter kit: Breeze,今天來閱讀文件:

Laravel: Authentication Quickstart

Illuminate\Support\Facades\Auth

使用Laravel的Auth Facades就可以直接取得授權的用戶,
也可以用Auth::check()檢查用戶是否登入了。

use Illuminate\Support\Facades\Auth;
 
$user = Auth::user();
$id = Auth::id();

if (Auth::check()) {
    // The user is logged in...
}

但比起Auth::check()的方式,比較常見的是在route前直接加上middleware

Route::get('/flights', function () {
    // Only authenticated users may access this route...
})->middleware('auth');

昨天在Laravel Middleware初探 /w Breeze-Day24也提到group起來的寫法:

Route::middleware('auth')->group(function () {
    Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
    Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
    Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});

Illuminate\Http\Request

也可以在Illuminate\Http\Request 實例中取得(也太方便了!!)
這樣在Controller裡面,我們都可以知道是誰在發Request
只要使用:->user()方法

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
 
class FlightController extends Controller
{
    /**
     * Update the flight information for an existing flight.
     */
    public function update(Request $request): RedirectResponse
    {
        $user = $request->user();
 
        // ...
 
        return redirect('/flights');
    }
}

Middleware>Authenticate.php

app>Http>Middleware>Authenticate.php 我們可以看到Breeze幫我們的route做的auth設定。
這邊只要滿足expectsJson(用 ajax 的方法来取得 json 格式數據),就不做任何事情,但條件不滿足的話,就會把用戶導回登入頁面。

protected function redirectTo(Request $request): ?string
    {
        return $request->expectsJson() ? null : route('login');
    }

但expectsJson並不能幫我們驗證用戶登入了沒呀!
再繼續研究!


上一篇
Laravel Middleware初探 /w Breeze-Day24
下一篇
JS: 相同值給多個變數,基礎觀念筆記-Day26
系列文
前輩說Laravel不難,好啊那就1人前後端試試看啊31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言