مارک پلاس

تکنولوژی نوین اینترنتی

احراز هویت سفارشی در لاراول

دسته‌بندی‌ها

احراز هویت سفارشی در لاراول
احراز هویت سفارشی در لاراول

ایجاد احراز هویت سفارشی در لاراول به شما این امکان را می‌دهد تا سیستم لاگین/ثبت‌نام را دقیقاً مطابق نیازهای پروژه‌تان طراحی کنید—چه با ایمیل، شماره موبایل، توکن، یا ترکیب آن‌ها. این روش زمانی کاربرد دارد که نمی‌خواهید از بسته‌های آماده مثل Breeze، Jetstream یا Fortify استفاده کنید، یا نیاز به کنترل دقیق‌تر دارید.


✅ فصل ۱: ساخت ساختار احراز هویت دستی

🔹 گام ۱: جدول کاربران را بساز یا مایگریت کن

اگر هنوز جدول users را نداری، اجرا کن:

bash
php artisan migrate

این دستور جدول users را طبق database/migrations/xxxx_create_users_table.php می‌سازد.


✅ فصل ۲: ساخت فرم لاگین و ثبت‌نام

🔹 ۲.۱. روت‌ها

در فایل routes/web.php بنویس:

php
use App\Http\Controllers\AuthController; Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login.form'); Route::post('/login', [AuthController::class, 'login'])->name('login'); Route::get('/register', [AuthController::class, 'showRegisterForm'])->name('register.form'); Route::post('/register', [AuthController::class, 'register'])->name('register'); Route::post('/logout', [AuthController::class, 'logout'])->name('logout')->middleware('auth');

✅ فصل ۳: ساخت کنترلر احراز هویت

bash
php artisan make:controller AuthController

🔹 app/Http/Controllers/AuthController.php

php
namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; class AuthController extends Controller { public function showLoginForm() { return view('auth.login'); } public function login(Request $request) { $credentials = $request->validate([ 'email' => 'required|email', 'password' => 'required', ]); if (Auth::attempt($credentials)) { $request->session()->regenerate(); return redirect()->intended('/dashboard'); } return back()->withErrors([ 'email' => 'اطلاعات وارد شده صحیح نیست.', ]); } public function showRegisterForm() { return view('auth.register'); } public function register(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|min:6|confirmed', ]); $user = User::create([ 'name' => $validated['name'], 'email' => $validated['email'], 'password' => Hash::make($validated['password']), ]); Auth::login($user); return redirect('/dashboard'); } public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/login'); } }

✅ فصل ۴: ساخت ویوهای فرم احراز هویت

🔹 resources/views/auth/login.blade.php

blade
<form method="POST" action="{{ route('login') }}"> @csrf <input type="email" name="email" placeholder="ایمیل" required> <input type="password" name="password" placeholder="رمز عبور" required> <button type="submit">ورود</button> </form>

🔹 resources/views/auth/register.blade.php

blade
<form method="POST" action="{{ route('register') }}"> @csrf <input type="text" name="name" placeholder="نام" required> <input type="email" name="email" placeholder="ایمیل" required> <input type="password" name="password" placeholder="رمز عبور" required> <input type="password" name="password_confirmation" placeholder="تأیید رمز" required> <button type="submit">ثبت‌نام</button> </form>

✅ فصل ۵: ساخت صفحه محافظت‌شده (مثلاً داشبورد)

روت:

php
Route::get('/dashboard', function () { return 'خوش آمدید، ' . auth()->user()->name; })->middleware('auth');

✅ فصل ۶: نکات امنیتی

  1. استفاده از Hash::make() برای رمز عبور

  2. استفاده از @csrf در فرم‌ها

  3. استفاده از middleware auth برای جلوگیری از دسترسی کاربران غیرمجاز

  4. استفاده از session()->regenerate() بعد از لاگین برای امنیت بیشتر


✅ فصل ۷: احراز هویت با شماره موبایل (اختیاری)

اگر بخوای احراز هویت با شماره موبایل داشته باشی:

  • یک فیلد phone به جدول users اضافه کن.

  • در کنترلر Auth::attempt(['phone' => $request->phone, 'password' => ...]) بنویس.

  • ورودی فرم‌ها رو هم اصلاح کن.


✅ نتیجه‌گیری

با احراز هویت سفارشی در لاراول می‌تونی کنترل کامل روی روند لاگین، ثبت‌نام، و لاگ‌اوت داشته باشی. این روش برای پروژه‌هایی که نیازهای خاص امنیتی یا UX دارند خیلی مفیده.

اگه خواستی نسخه API همین سیستم رو هم می‌تونم برات بسازم با Sanctum یا Passport. فقط بگو.

محتوای مرتبط

پست‌های مرتبط