[身份驗證腳手架] 前端認證與個人資料界面

第2章:前端認證與個人資料界面

歡迎回來,未來的Web開發者!在前一章中,我們學習了breeze:install命令如何為您的Laravel應用設置用戶認證基礎。您選擇了一個"前端技術棧"(如Blade、React、Vue或Livewire)并運行了一些命令。

現在,是時候看看這些努力的成果了!本章將揭開帷幕,向您展示實際的面向用戶的元素——用戶將與之交互的屏幕和表單,用于登錄、注冊、重置密碼和管理個人資料。想象一下打開盒子,看到認證系統中所有精美、預先構建的部件。

問題:構建用戶界面很難!

想象您正在建造一棟房子。您不會想手工制作每一塊磚、每一扇窗戶和每一扇門。相反,您會使用預制組件或遵循經過驗證的藍圖。同樣,在Web開發中,從頭開始創建精美的登錄、注冊和個人資料頁面可能是一項艱巨的任務。您需要設計布局、樣式化表單、確保它們易于使用,并處理所有不同的場景(如忘記密碼或更新電子郵件)。

這正是Laravel Breeze的閃光點。它為您提供了一套完整的、視覺吸引人且功能完善的用戶界面(UI)組件,滿足所有認證需求。就像為您的Web應用準備了一套設計精美、即用型的"入口大廳"(登錄、注冊)和"個人辦公室"(個人資料管理)。

Breeze提供的內容:現成的UI頁面

運行php artisan breeze:installnpm install && npm run devphp artisan migrate后,您的應用現在擁有了一套功能完整的認證和個人資料頁面。讓我們看看Breeze為您設置的關鍵用戶界面:

  • 登錄頁面:現有用戶進入應用的入口。
  • 注冊頁面:新用戶創建賬戶的地方。
  • 密碼重置頁面:"忘記密碼"鏈接和設置新密碼的表單,確保用戶忘記憑據時可以重新獲得訪問權限。
  • 電子郵件驗證頁面:(可選,如果啟用)注冊后提示用戶驗證電子郵件地址的頁面。
  • 用戶個人資料管理:登錄后,用戶可以訪問其個人設置,包括:
    • 更新姓名和電子郵件。
    • 更改密碼。
    • 刪除賬戶(帶確認步驟)。

Breeze確保這些頁面不僅功能完善,而且外觀精美,默認使用Tailwind CSS進行現代化樣式設計。

實際體驗

要查看這些頁面,只需打開Web瀏覽器并導航到本地開發服務器上的這些地址(例如http://127.0.0.1:8000http://localhost:8000):

  1. 注冊:訪問/register。您將看到一個創建新賬戶的表單,包含姓名、電子郵件、密碼和確認密碼字段。

  2. 登錄:注冊后,或如果已有賬戶,訪問/login。在此處,您可以輸入電子郵件和密碼以訪問應用的認證部分。還有一個"記住我"復選框方便使用。

  3. 忘記密碼:在登錄頁面,點擊"忘記密碼?"鏈接。這將帶您到/forgot-password,您可以在此輸入電子郵件以接收密碼重置鏈接。

  4. 儀表板(登錄后):成功登錄后,您將被重定向到/dashboard。這是一個基本頁面,表示您已通過認證。

  5. 個人資料管理:從儀表板(或任何認證頁面),尋找"個人資料"鏈接(通常在導航欄的下拉菜單中)。點擊這將帶您到/profile,您可以在此管理賬戶。

    • 更新個人資料信息:更改姓名或電子郵件。
    • 更新密碼:更改當前密碼。
    • 刪除賬戶:永久刪除賬戶的安全選項。

這整套用戶界面由Breeze自動提供,為您的應用提供了一個全面且專業的起點。

幕后機制:工作原理

那么,Breeze如何提供這些精美的頁面,它們又如何與Blade、React、Vue或Livewire等不同的前端技術協同工作?

前端技術棧的"魔法"

當您在breeze:install過程中選擇一個"技術棧"時,實際上是在告訴Breeze為這些前端頁面使用哪種"架構風格"。

  • Blade with Alpine.js:這是Laravel的傳統模板系統。頁面主要是由Laravel在服務器端渲染的HTML文件(.blade.php)。Alpine.js添加了輕量級的交互性。
  • React with Inertia.jsVue with Inertia.js:這些使用現代JavaScript框架。Inertia.js充當橋梁,允許您使用React或Vue組件構建單頁應用(SPA),同時仍利用Laravel的路由和控制器。
  • Livewire:這允許您完全使用PHP構建動態界面,最小化編寫復雜JavaScript的需求。

無論選擇哪種技術棧,Breeze都提供一致的視覺和交互體驗。底層的"構建材料"可能不同(Blade模板與React組件),但"設計"(您看到的UI)通常是相同的。

文件結構(以Blade為例)

讓我們追蹤如果選擇Blade技術棧,用戶訪問/login頁面時會發生什么。

在這里插入圖片描述

運行breeze:install(選擇Blade技術棧)后,您將在項目中找到這些UI文件:

  • resources/views/auth/login.blade.php
  • resources/views/auth/register.blade.php
  • resources/views/auth/forgot-password.blade.php
  • resources/views/auth/reset-password.blade.php
  • resources/views/auth/verify-email.blade.php
  • resources/views/profile/edit.blade.php
  • …以及resources/views/profile/partials/中的其他部分,用于更新信息、密碼和刪除用戶。

這些.blade.php文件本質上是帶有特殊Laravel Blade語法的HTML模板,它們通常使用Blade組件來保持代碼整潔和可重用。例如,登錄頁面(login.blade.php)看起來像這樣(簡化版):

<!-- 文件: resources/views/auth/login.blade.php (簡化版) -->
<x-guest-layout><form method="POST" action="{{ route('login') }}">@csrf {{-- 安全令牌,防止攻擊 --}}<div>{{-- 這是一個Blade組件,用于標簽 --}}<x-input-label for="email" :value="__('Email')" />{{-- 這是一個Blade組件,用于文本輸入字段 --}}<x-text-input id="email" class="block mt-1 w-full"type="email" name="email" required autofocus />{{-- 此組件顯示電子郵件字段的任何驗證錯誤 --}}<x-input-error :messages="$errors->get('email')" class="mt-2" /></div><div class="mt-4"><x-input-label for="password" :value="__('Password')" /><x-text-input id="password" class="block mt-1 w-full"type="password" name="password" required /><x-input-error :messages="$errors->get('password')" class="mt-2" /></div><div class="flex items-center justify-end mt-4">{{-- 指向密碼重置頁面的鏈接 --}}<a href="{{ route('password.request') }}">{{ __('Forgot your password?') }}</a>{{-- 主要登錄按鈕的Blade組件 --}}<x-primary-button class="ms-3">{{ __('Log in') }}</x-primary-button></div></form>
</x-guest-layout>

在這個片段中:

  • <x-guest-layout>是一個Blade組件,用于包裝認證表單,提供一致的布局(如居中表單)。
  • @csrf是一個特殊的Blade指令,生成一個包含安全令牌的隱藏輸入字段。這對保護表單至關重要。
  • <x-input-label><x-text-input><x-input-error><x-primary-button>都是Breeze提供的自定義Blade組件。它們定義了常見的UI元素,如標簽、文本字段、錯誤消息和按鈕,確保應用中的一致外觀和感覺。您可以在resources/views/components/中找到這些組件的定義。

如果選擇React、Vue或Livewire技術棧,您會在resources/js/Pages/Auth/(React/Vue)或resources/views/livewire/pages/auth/(Livewire)中找到類似的組件文件。例如,Login.jsx(React)、Login.vue(Vue)或login.blade.php(Livewire Volt/Class API)會包含登錄頁面的特定UI代碼,但從概念上講,它們都服務于相同的目的:提供面向用戶的表單。

這些文件完全可以自定義!您可以打開它們,更改文本、重新排列元素,甚至完全重新設計以匹配應用的品牌。Breeze為您提供了一個堅實、可用的起點,但您完全可以根據需要調整它。

結論

Laravel Breeze為基本的用戶認證和個人資料管理提供了一個全面、即用型的前端。

只需運行breeze:install命令,就能獲得精美樣式的登錄、注冊、密碼重置和個人資料管理頁面。

這些頁面使用選擇的前端技術棧(Blade、React、Vue、Livewire)構建,并且完全可自定義,節省大量開發時間和精力。

現在已經看到了用戶界面,可能想知道Laravel如何知道在訪問/login/register時顯示這些特定頁面。這就是認證路由的作用

在下一章中,我們將深入探討Laravel的路由系統如何將這些用戶友好的URL連接到Breeze提供的后端邏輯和前端視圖。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96985.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96985.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96985.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RabbitMQ、RocketMQ 和 ActiveMQ 三種主流消息隊列的詳細部署安裝指南

RabbitMQ、RocketMQ 和 ActiveMQ 三種主流消息隊列的詳細部署安裝指南 RabbitMQ、RocketMQ 和 ActiveMQ 三種主流消息隊列的詳細部署安裝指南。 一、RabbitMQ 部署安裝 RabbitMQ 用 Erlang 語言編寫,推薦使用官方提供的 Docker 鏡像或包管理器安裝。 方法一:使用 Docker (…

vue新增用戶密碼框自動將當前用戶的密碼自動填充的問題

1.問題 新增店鋪的時候&#xff0c;設置管理員賬號&#xff0c;輸入框已將當前登錄用戶的密碼填充上了解決方式 在el-input輸入框類型為password的上增加參數autocomplete“new-password”<el-form-item :label"$t(storeList.password)" prop"shopUserPasswo…

設計模式:工廠模式(Factory Pattern)

文章目錄一、工廠模式簡介二、簡單工廠模式的概念三、工廠方法模式的概念四、抽象工廠模式的概念一、工廠模式簡介 工廠模式是一種創建型設計模式&#xff0c;主要解決對象創建 的問題。它的核心思想是&#xff1a;把對象的創建和使用分離&#xff0c;讓使用者不直接依賴具體類…

【Qt調試】斷點時,Expressions不能查看變量

環境Qt版本&#xff1a;6.9.1問題Qt creator進入斷點&#xff0c;Expressions不能查看變量&#xff08;類型&#xff1a;int&#xff09;的值&#xff0c;而局部變量可以查看。解決方法調試器/CDB&#xff0c;勾選【Use Python dumper】

C++ 函數:從基礎到現代特性的全面解析

《C++ 函數:從基礎到現代特性的全面解析》 目錄 函數基礎 1.1 函數定義與聲明 1.2 參數傳遞機制(值傳遞、引用傳遞、指針傳遞) 1.3 返回值與void函數 1.4 函數聲明與定義的分離 函數進階 2.1 函數重載的多態性 2.2 遞歸函數的設計與優化 2.3 Lambda表達式與匿名函數 2.4 函…

【AMBA總線互聯IP】

1 常見AMBA互聯總線IP 1.1 常見的IP工具 1.ARM: NIC-4xx 2.Synopsys: Designwave IP for AMBA interconnect 3.Sonicsinc: Non-conherent NoC only, no coherent noc. 4.Netspeed: Gemini Origin–Congiurable cache coherent. 5.Arterix(FlexNoc, Ncore):Ncore–support CHI,…

PEFT 模型解析(59)

PEFT 模型 若你使用 SFTTrainer 類進行訓練(第 5 課將詳細介紹),僅配置信息可能就足夠了 —— 該類會在底層自動完成適配器(adapters)與基礎模型的關聯工作。 不過目前,我們選擇手動完成這一操作,以便更深入理解模型是如何被實際修改的。這個過程非常簡單:我們只需調用…

flume監控目錄文件實戰:三種 Source 方案對比與配置指南

flume監控目錄文件實戰&#xff1a;三種 Source 方案對比與配置指南 在實際業務中&#xff0c;監控目錄文件變化并實時采集數據是常見需求&#xff08;如應用日志、業務數據文件等&#xff09;。Flume 提供了三種主流方案實現目錄文件監控&#xff0c;各有優劣。本文將詳細講解…

從串口到屏幕:如何用C#構建一個軍工級數據實時監控

你是否曾想過&#xff0c;那些在軍事、航天或工業控制中呼嘯而過的導彈、無人機&#xff0c;它們內部的狀態數據是如何被地面人員實時捕獲、解析并清晰呈現的&#xff1f;今天&#xff0c;我們將深入剖析一個完整的C#項目——串口數據實時顯示系統&#xff0c;它不僅是一個串口…

并行多核體系結構基礎——共享存儲并行編程與針對鏈式數據結構的并行編程(筆記)

目錄三、共享存儲并行編程3.1 并行編程步驟3.2 依賴分析3.2.1 循環級依賴分析3.2.2 迭代空間遍歷圖和循環傳遞依賴圖3.3 識別循環依賴中的并行任務3.3.1 循環迭代間的并行和DOALL并行3.3.2 DOACROSS&#xff1a;循環迭代間的同步并行3.3.3 循環中語句間的并行3.3.4 DOPIPE循環中…

文獻閱讀筆記【雷達信號分選】:基于機器學習的雷達信號分選方法綜述

文獻閱讀筆記&#xff1a;基于機器學習的雷達信號分選方法綜述【文獻閱讀筆記】基于機器學習的雷達信號分選方法綜述一、文獻基本信息二、摘要與引言2.1 研究背景2.2 文獻核心貢獻2.3 全文結構三、背景知識&#xff08;II. BACKGROUND&#xff09;3.1 EW接收器與工作流程3.2 雷…

SciPy科學計算與應用:SciPy線性代數模塊入門-矩陣運算與應用

線性代數與SciPy&#xff1a;矩陣運算的藝術 學習目標 通過本課程&#xff0c;學員將掌握如何使用SciPy的線性代數模塊&#xff08;scipy.linalg&#xff09;進行高效的矩陣運算&#xff0c;包括求解線性方程組、計算特征值和特征向量、以及執行奇異值分解。這些技能對于數據科…

【Js】易混淆的CommonJS和ESM(ES Module),及它們區別

前言&#xff1a; 【CommonJs】exports&#xff0c;modules.exports&#xff0c;require的區別 &#x1f4cc;概念 1. CommonJS 概念 歷史&#xff1a;早期 JavaScript 主要跑在瀏覽器&#xff0c;沒有模塊系統&#xff1b;Node.js 為了管理代碼&#xff0c;引入了 CommonJS…

自然處理語言NLP: 基于雙分支 LSTM 的酒店評論情感分析模型構建與實現

文章目錄數據預處理一、導入依賴庫二、定義路徑和基礎參數三、構建詞表字典&#xff08;data_deal函數&#xff09;四、文本轉索引五、詞表長度統計六、填充數據&#xff08;統一文本長度&#xff09;七、劃分訓練集和測試集八、批量加載數據完整代碼簡單模型構建步驟 1&#x…

nginx代理 flink Dashboard、sentinel dashboard的問題

nginx代理 flink web、sentinel dashboard的坑 Nginx反向代理Flink Dashboard和Sentinel Dashboard的問題 問題背景 問題分析(sentinel為例) 原理解析 1. 尾部斜杠的重要性 2. 修復方案的工作原理 3. 代理配置的細節 解決方案 經驗總結 Nginx反向代理Flink Dashboard和Sentinel…

Baumer高防護相機如何通過YoloV8深度學習模型實現形狀檢測器的使用(YOLOv8 Shape Detector)

《------往期經典推薦------》 AI應用軟件開發實戰專欄【鏈接】 序號項目名稱項目名稱11.工業相機 YOLOv8 實現人物檢測識別&#xff1a;&#xff08;C#代碼&#xff0c;UI界面版&#xff09;2.工業相機 YOLOv8 實現PCB的缺陷檢測&#xff1a;&#xff08;C#代碼&#xff0…

代碼隨想錄算法訓練營第五十天|圖論part08

軟件構建&#xff08;拓撲排序&#xff09;題目描述&#xff1a;某個大型軟件項目的構建系統擁有 N 個文件&#xff0c;文件編號從 0 到 N - 1&#xff0c;在這些文件中&#xff0c;某些文件依賴于其他文件的內容&#xff0c;這意味著如果文件 A 依賴于文件 B&#xff0c;則必須…

要聞集錦|阿里官網調整為四大業務板塊;華為云重組多個事業部涉及上千人;群核科技在港交所更新招股書

互聯網大事件阿里官網調整為四大業務板塊阿里巴巴官網“我們的業務”板塊變更&#xff0c;從六大業務集團其他業務變更為阿里中國電商集團、阿里國際數字商業集團、云智能集團及所有其他業務。餓了么、飛豬歸入阿里中國電商集團&#xff0c;高德地圖、菜鳥、優酷、大麥娛樂等歸…

瀟灑郎: Python實現檢測鼠標移動和音視頻播放行為——打造省電腳本

目標:Windows自動睡眠監控器,檢測筆記本長時間無用戶行為操作后進入睡眠模式以節省電量 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Windows自動睡眠監控器 檢測筆記本長時間無用戶行為操作后進入睡眠模式以節省電量 """ import os …

Qt工具欄中圖標槽函數沒有響應的問題分析

1、在ui_QtGuitTest.h中有定義 QAction *action_distanceMeasureQAction *action_distanceMeasure;在QtGuiTest.cpp的InitToolBar()函數中也有定義&#xff0c;如下圖所示&#xff1a;2、槽函數為//距離測量槽函數 void QtGuiTest::slot_onDistanceMeasureButtonClicked() {_is…