Calvert's murmur

使用 JWT 身份驗證實作 Laravel REST API

PHP Laravel

Laravel 預設提供了 3 種身份驗證方式,分別為 authauth.basicguest,並透過 middleware 提供我們使用。

不過通常我們在提供 API 時會採用 JWT 來實作所需要的身份驗證功能,在 Laravel 中我們通常會使用 tymon/jwt-auth 來實作 JWT,以下就讓我們一起來實作吧。

本文實作時採用的是 Laravel 7.15.0tymon/jwt-auth 1.0.0

繼續閱讀

Laravel 如何產生 Email 驗證網址

PHP Laravel

由於新專案決定使用 Laravel 開發,在實作 Email 驗證時發現與 Devise 不同的是,它沒有在資料表內建立 confirmation_token 欄位,於是便讓我想了解一下它產生驗證網址的方式。

在追蹤原始碼後發現驗證網址是透過 verificationUrl 函數所產生的。

vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php
/** * Get the verification URL for the given notifiable. * * @param mixed $notifiable * @return string */ protected function verificationUrl($notifiable) { return URL::temporarySignedRoute( 'verification.verify', Carbon::now()->addMinutes(Config::get('auth.verification.expire', 60)), [ 'id' => $notifiable->getKey(), 'hash' => sha1($notifiable->getEmailForVerification()), ] ); }

由以上程式碼可看到它透過了 UrlGenerator 提供的 temporarySignedRoute 函數來產生暫時性的驗證網址。

繼續閱讀

Golang 介面教學與範例

Golang

原文:CalliCoderGolang Interfaces Tutorial with Examples

Go 的介面

Go 中的介面是使用一組方法簽名定義的型別。介面定義了類似物件型別的行為。

舉例來說,這是一個定義幾何形狀行為的介面:

// Go Interface - `Shape`
type Shape interface {
	Area() float64
	Perimeter() float64
}

使用 type 關鍵字定義介面,後面接著介面名稱和關鍵字 interface。然後,在大括號內指定一組方法簽名。

繼續閱讀

Golang 方法教學與範例

Golang

原文:CalliCoderGolang Methods Tutorial with Examples

技術上來說,Go 不是物件導向程式語言。它沒有類別、物件和繼承。

但是,Go 有型別。並且,你可以在型別上定義方法。這讓 Go 有物件導向程式的風格。

讓我們深入了解,看看如何辦到?

繼續閱讀

Golang struct 教學與範例

Golang

原文:CalliCoderGolang Structs Tutorial with Examples

struct 是使用者定義的型別,包含已命名欄位/屬性的集合。它用於將相關資料分組在一起形成一個單位。任何具有一組屬性的現實世界實體都可以使用結構表示。

如果你有物件導向的背景知識,你可以將 struct 視為支援複合但不支援繼承的輕量級類別。

定義 struct 型別

你可以像這樣定義新的 struct 型別:

type Person struct {
	FirstName string
	LastName  string
	Age       int
}
繼續閱讀

在 Golang 與指標共舞

Golang

原文:CalliCoderPlaying with Pointers in Golang

指標是一個變數,用來儲存另一個變數的記憶體位址。疑惑嗎?讓我來解釋一下。

首先讓我們來了解什麼是變數。當我們在撰寫任何程式時,我們需要在記憶體中儲存一些資料。資料儲存在記憶體中的特定位址。記憶體位址看起來會像 0xAFFFF(這是以十六進制來表示記憶體位址)。

繼續閱讀

Golang map 介紹

Golang

原文:CalliCoderGolang Maps by Example

map 是沒有順序的鍵值對集合。它將鍵對應到值。鍵在 map 是唯一的,而值可能不是。

map 資料結構用於基於鍵的快速尋找、取得和刪除資料。它是電腦科學中最常用的資料結構之一。

Go 提供了內建的 map 型別。在本文中,我們將學到如何使用 Golang 內建的 map 型別。

繼續閱讀

Golang Slice 介紹

Golang

原文:CalliCoderIntroduction to Slices in Golang

Slice 是陣列的一部分。Slice 建構在陣列之上,與陣列相比提供了更多功能、靈活性和便利性。

如同陣列一樣,Slice 是可索引的且具有長度。但與陣列不同的是,它們可以調整長度。

在內部,Slice 只是對底層陣列的參考。在本文中,我們將學到如何建立和使用 Slice,並了解它們背後的運作方式。

繼續閱讀

在 Golang 中使用陣列

Golang

原文:CalliCoderWorking with Arrays in Golang

陣列是固定長度的相同型別元素的集合。陣列的元素按順序儲存,並且可以使用它們的 index 來存取。

繼續閱讀

Golang Package 初學者指南

Golang

原文:CalliCoderA beginners guide to Packages in Golang

Go 旨在鼓勵良好的軟體工程實踐。高品質軟體的指導原則之一是 DRY 原則:Don’t Repeat Yourself,這意味著你永遠不應重複撰寫相同的程式碼。你應該重複使用並儘可能建立在現有程式碼上。

允許程式碼重複使用的最基本的建構區塊是函數Package 是程式碼可重複使用性的下一步。他們可幫助你將相關的 Go 原始檔組織到同一單元中,使他們模組化、可重複使用和可維護。

在本文中,你將學到如何將 Go 程式碼組織到可重複使用的 package 中,如何匯入 package,如何將函數、型別或變數匯出到外部 package,以及如何安裝第三方 package。

繼續閱讀
上一頁 下一頁