يوسف محمد49 نشر 7 فبراير أرسل تقرير نشر 7 فبراير انا اتعلم لارافل جديد اريد معرفة كيف انشئ المصادقه بواسطة sanctum مثل تسجيل الدخول و انشاء الحساب وما الي ذالك 2 اقتباس
1 Taha Khaled2 نشر 7 فبراير أرسل تقرير نشر 7 فبراير (معدل) ساحاول تبسيط الشرح علي قدر المستطاع اولا حفظ بيانات مستخدمينا واحد من أهم الأشياء التي نحتاجها في تطوير الويب ، وهذا يمكن أن يوضع تحت مظلة "الأمان". هناك طرق مختلفة لتحقيق ذلك ولاكن بطبع ساشرح بتفاصيل علي حزمة sanctum ما هو sanctum ؟ sanctum هو حزمة بسيطة تستخدم لتنفيذ المصادقة لواجهة برمجة التطبيقات API تم تصميمها لتأمين مسارات واجهة برمجة التطبيقات في تطبيقات لارافيل. sanctum حزمة خفيفة لتثبيتها في المشروع، مما يعني أنه سهل التنفيذ وبسيط. تثبيت الحزمه والتعرف عليها عليك تثبيت الحزمه بواسطة الأمر التالي composer require laravel/sanctum ثما عليك تنفيذ الامر التالي لكي تعمل بدون مشاكل php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider" اخر شئ في تثبيت الحزمه php artisan migrate مثال علي استخدام Sanctum يجب عليك إنشاء وحدة التحكم بهذه الطريقه php artisan make:controller UserAuthController كيفية انشاء المصادقه مثل , انشاء الحساب, تسجيل الدخول , تسجيل الخروج عليك الاتجاه لهذه المسار routes\api.php ثم خذه هذه الكود نسخ ثما الصقه بداخل هذه الملف use App\Http\Controllers\AuthController; Route::post('register',[UserAuthController::class,'register']); Route::post('login',[UserAuthController::class,'login']); Route::post('logout',[UserAuthController::class,'logout']) ->middleware('auth:sanctum'); هذا الكود يوضح كيفية تعريف مسارات (Routes) في إطار عمل Laravel للتعامل مع عمليات المصادقة (Authentication). يتم استخدام Sanctum، لتأمين بعض العمليات. المسار 'register' يقوم بتنفيذ الدالة 'register' في AuthController عندما يتم إرسال طلب POST إلى 'register'. المسار 'login' يقوم بتنفيذ الدالة 'login' في AuthController عندما يتم إرسال طلب POST إلى 'login'. المسار 'logout' يقوم بتنفيذ الدالة 'logout' في AuthController عندما يتم إرسال طلب POST إلى 'logout'. ويتم تطبيق مرشح (Middleware) بإسم 'auth:sanctum' على هذا المسار، وهذا يعني أنه يجب أن يكون المستخدم مصادقاً (مسجلاً الدخول) باستخدام Sanctum قبل أن يتمكن من تنفيذ عملية 'logout'. إضافة وظيفة انشاء الحساب انتقل إلى app\http\controllers\UserAuthController وأضف هذه الدوال public function register(Request $request){ $registerUserData = $request->validate([ 'name'=>'required|string', 'email'=>'required|string|email|unique:users', 'password'=>'required|min:8' ]); $user = User::create([ 'name' => $registerUserData['name'], 'email' => $registerUserData['email'], 'password' => Hash::make($registerUserData['password']), ]); return response()->json([ 'message' => 'User Created ', ]); } ضع هذه الكود في الملف هذه وظيفة مختصه في انشاء الحساب , نقوم بالتحقق من صحة البيانات الواردة للتأكد من أن جميع البيانات واضحة وتطابق القاعدة، إذا كانت جميعها جيدة، فتقم بإنشاء مستخدم. إضافة وظيفة تسجيل الدخول public function login(Request $request){ $loginUserData = $request->validate([ 'email'=>'required|string|email', 'password'=>'required|min:8' ]); $user = User::where('email',$loginUserData['email'])->first(); if(!$user || !Hash::check($loginUserData['password'],$user->password)){ return response()->json([ 'message' => 'Invalid Credentials' ],401); } $token = $user->createToken($user->name.'-AuthToken')->plainTextToken; return response()->json([ 'access_token' => $token, ]); } نحن نقوم بالتحقق من صحة الطلب والتأكد من وجود مستخدم بهذه المعلومات، ثم نقوم باستدعاء الدالة createToken() لإنشاء رمز مميز (Token) للمستخدم المسجل عن طريق تمرير اسمه أو أي معلومة ترغب فيها. بعد ذلك، نقوم بالوصول إلى خاصية plainTextToken بتسلسل الوصول للحصول على قيمة الرمز كنص عادي. في النهاية، نقوم بإرجاع استجابة JSON تحتوي على الرمز. في النهايه إضافة وظيفة تسجيل الخروج public function logout(){ auth()->user()->tokens()->delete(); return response()->json([ "message"=>"logged out" ]); } الآن نحصل فقط على المستخدم الذي تمت مصادقته ونحذف الرموز الخاصة به تم التعديل في 7 فبراير بواسطة Taha Khalid 1 اقتباس
0 Khaled Osama3 نشر 7 فبراير أرسل تقرير نشر 7 فبراير Laravel Sanctum يوفر نظام مصادقة بسيط وخفيف الوزن لـ SPA (Single Page Applications)، والخدمات المتنقلة، والتوكنات البسيطة المستندة إلى API. إليك عده خطوات بسيطه لانشاء نظام المصادقة باستخدام Laravel Sanctum: 1. تثبيت Sanctum: composer require laravel/sanctum 2. نشر التكوين في دليل التكوين الخاص (config): php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider" 3. تشغيل الترحيلات (Migrations): يجب تشغيل الترحيلات لإنشاء جداول البيانات اللازمة لـ Sanctum. php artisan migrate 4. إضافة Sanctum's Middleware: يجب إضافة Sanctum's middleware إلى مجموعة الـ api middleware في ملف app/Http/Kernel.php: 'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 5. إعداد نموذج المستخدم: يجب أن يستخدم نموذج User الخاص بك trait HasApiTokens من Sanctum. use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; } 6.: تكوين الحماية لحماية الـ routes التي تتطلب مصادقة، استخدم middleware sanctum. في ملف api.php أو web.php (حسب تطبيقك)، قم بإضافة sanctum كـ middleware للـ routes: Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); }); 7. إنشاء الحساب وتسجيل الدخول وتسجيل الخروج: تسجيل الدخول في AuthController (قد تحتاج إلى إنشائه): use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use App\Models\User; use Illuminate\Http\Request; // تسجيل الدخول public function login(Request $request) { $request->validate([ 'email' => 'required|email', 'password' => 'required', ]); $user = User::where('email', $request->email)->first(); if (!$user || !Hash::check($request->password, $user->password)) { return response()->json(['message' => 'Unauthorized'], 401); } $token = $user->createToken('authToken')->plainTextToken; return response()->json(['token' => $token]);} إنشاء حساب: // إنشاء حساب public function register(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8|confirmed', ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); $token = $user->createToken('authToken')->plainTextToken; return response()->json(['token' => $token]); } تسجيل الخروج: public function logout(Request $request) { // إبطال جميع رموز الوصول للمستخدم الحالي $request->user()->tokens()->delete(); return response()->json(['message' => 'تم تسجيل الخروج بنجاح']); } 8. تعريف المسارات: في routes/api.php, قم بإضافة المسارات اللازمة للتسجيل وتسجيل الدخول. Route::post('/register', [AuthController::class, 'register']); Route::post('/login', [AuthController::class, 'login']); Route::middleware('auth:sanctum')->post('/logout', [AuthController::class, 'logout']); تأكد من استيراد AuthController في أعلى ملف api.php. 9. اختبار الـ API: يمكنك الآن اختبار إنشاء الحساب وتسجيل الدخول باستخدام Postman بإرسال طلبات POST إلى /api/register و /api/login و /api/logout مع البيانات المطلوبة. تأكد من مراجعة الوثائق من الموقع الرسمي لتنفيذ كل خطوة https://laravel.com/docs/master/sanctum. اقتباس
السؤال
يوسف محمد49
انا اتعلم لارافل جديد اريد معرفة كيف انشئ المصادقه بواسطة sanctum مثل تسجيل الدخول و انشاء الحساب وما الي ذالك
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.