شماره 42: احراز هویت کاربر با ققنوس

  • 2021-11-27

بسته های مختلف زیادی برای کمک به احراز هویت در برنامه های اکسیر وجود دارد.

در حالی که ما در قسمت های بعدی پوشش خواهیم داد, من می خواستم با نشان دادن یک مثال از اینکه چگونه می توانیم احراز هویت کاربر خود را بنویسیم - از ابتدا شروع کنم.

امیدوارم این مقدمه ای برای احراز هویت باشد که می توانید هنگام اجرای برنامه اکسیر خود بسازید و بهبود ببخشید.

بسیار خوب-بیایید با نگاهی به برنامه ای که استفاده می کنیم شروع کنیم. در اینجا ما برنامه فیلم خود را داریم و در حال حاضر هر کسی می تواند فیلم ها را ایجاد و ویرایش کند. کاری که ما می خواهیم انجام دهیم این است که کاربر قبل از ایجاد یا ویرایش فیلم وارد سیستم شود.

بیایید با اجرای ققنوس ژنراتور اچ تی ام ال به بوت استرپ ثبت نام کاربر ما شروع و ما یک زمینه به نام "حساب" ایجاد, " کاربر "برای ماژول کاربر ما, خواهد شد که ماژول طرح اکتو ما," کاربران " است که جمع ماژول کاربر ما - این است که به عنوان نام جدول ما در پایگاه داده استفاده می شود.

و اجازه دهید این ساده نگه دارید و فقط به کاربران ما دو زمینه - یک نام کاربری خواهد شد که یک رشته منحصر به فرد. و یک فیلد رمز عبور که ما رمز عبور رمزگذاری شده را فراخوانی خواهیم کرد . ما در مورد اینکه چرا تصمیم گرفتیم کمی اینگونه بنامیم صحبت خواهیم کرد.

در حال حاضر اجازه دهید ژنراتور ما را اجرا کنیم.

حالا بیایید روتر را باز کنیم.

ثبت نام ما محدود به ایجاد کاربر خواهد بود. بنابراین اجازه دهید اضافه کردن تنها اضافه کردن جدید و ایجاد اقدامات و به دلیل این است که برای کاربران ثبت نام, اجازه دهید تغییر نشانی اینترنتی"ثبت نام".

حالا که مسیر خود را اضافه کرده ایم بیایید مهاجرت های خود را انجام دهیم.

و چون ما در حال محدود کردن مسیرهای خود هستیم, بیایید کنترل کننده کاربر خود را باز کنیم.سابق و ما تمام اقدامات حذف, به جز جدید و ایجاد .

سپس یک بار یک کاربر برای سایت ثبت نام, اجازه دهید مستقیم به مسیر شاخص فیلم و اجازه دهید به روز رسانی پیام ما نمایش داده و همچنین.

سپس می توانیم الگوهایی را که نیازی نداریم حذف کنیم: ویرایش کنید.اچ تی ام ال.صفحه اول.اچ تی ام ال.و نشان می دهد.اچ تی ام ال.اکس . سپس اجازه دهید جدید را باز کنیم.اچ تی ام ال.الگو و بیایید پیوند "بازگشت" را حذف کنیم زیرا ما این صفحه را نداریم و اجازه می دهیم متن را برای خواندن "ثبت نام"تغییر دهیم.

مسیر الگو: معاونت/معلم_وب/قالب/کاربر/جدید.اچ تی ام ال.ایکس

سپس فرم را باز می کنیم.اچ تی ام ال.ما برچسب را به روز می کنیم تا کمی کاربرپسندتر شود و فقط رمز عبور را بخواند . بیایید همچنین ورودی رمز عبور خود را با تغییر به گذرواژه_ ورودی ماسک کنیم .

مسیر الگو: معاونت/معلم_وب/قالب/کاربر/فرم.اچ تی ام ال.ایکس

بیایید برنامه خود را نیز باز کنیم.اچ تی ام ال.ایکس و شامل لینک ثبت نام ما.

مسیر الگو: معاونت/معلم_وب/قالب/طرح/برنامه.اچ تی ام ال.ایکس

حالا بیایید به خط فرمان برگردیم و سرور خود را راه اندازی کنیم.

و اجازه دهید چک کردن صفحه جدید ما در: http://localhost:4000/registrations/new

و عالی-صفحه ثبت نام ما کار می کند.

حال اگر فرم را در اینجا ارسال کنیم یک کاربر ایجاد می کنیم اما نمی خواهیم از پیاده سازی فعلی استفاده کنیم زیرا رمز عبور را قبل از ذخیره رمزگذاری نمی کنیم.

بیایید از کتابخانه کومونین برای هش کردن رمزهای عبور خود استفاده کنیم.

بیایید فایل ترکیبی خود را باز کنیم

و ما کومونین را به وابستگی های خود اضافه خواهیم کرد.

سپس ما باید یک الگوریتم هش کردن رمز عبور را انتخاب کنیم. اسناد کومونین سه مورد مختلف را برای انتخاب لیست می کند. بیایید از بیکریپت استفاده کنیم .

ما به خط فرمان می رویم و وابستگی های خود را بارگیری می کنیم.

بزرگ در حال حاضر اجازه بازگشت کاربر ما.ماژول سابق و نام مستعار بیایید.رمزنگاری .

اکنون باید رمز عبور خود را قبل از ذخیره هش کنیم. بیایید به مجموعه تغییرات خود برویم و عملکرد تغییر _ به روزرسانی را اضافه خواهیم کرد. این عملکرد ما را فراخوانی می کند رمزگذاری.اگر تغییری برای کلید رمز عبور رمزگذاری شده وجود دارد نمک بزنید و با بازگشت این عملکرد به روز کنید.

حالا ما می توانیم برای سایت ثبت نام و رمز عبور ارسال خواهد شد قبل از اینکه به پایگاه داده ما را نجات داد رمزگذاری شده است. بیایید جلسه را نیز پس از ثبت نام کاربر تنظیم کنیم.

ما کنترل کننده کاربر خود را باز خواهیم کرد.سابق و پس از کاربر ما ایجاد شده است, اجازه دهید شناسه کاربری خود را در جلسه به عنوان :شناسه کاربری فعلی .

با این کار بیایید سرور را راه اندازی کنیم.

حالا بیایید به مرورگر خود برویم http://localhost:4000/registrations/new و کاربر خود را ایجاد کنید و عالی ما را به صفحه اصلی هدایت می کند و پیام ما را به ما می دهد. اگر ما چک کردن پایگاه داده, ما می بینیم کاربر ما ایجاد شد.

حالا که ما می توانیم ثبت نام, ما نیاز به یک راه برای بررسی اگر یک کاربر یک جلسه - و در صورتی که انجام می دهند - یک راه برای خروج از سیستم. چند راه مختلف وجود دارد که ما می توانیم این کار را انجام دهیم اما کاری که ما در اینجا انجام خواهیم داد ایجاد یک دایرکتوری جدید به نام یاران در معلم_وب است . سپس ما می توانیم یک ماژول جدید برای توابع کمکی ما گروه بندی شده توسط قابلیت های خود را ایجاد کنید.

بنابراین در اینجا به خوبی یک تایید فایل جدید ایجاد کنید.سابق که توابع یاور ما ما برای احراز هویت نیاز خانه. سپس می توانیم ماژول خود را تعریف کنیم.

و اجازه دهید ایجاد یک تابع برای دریافت فعلی ما _ کاربری _ از جلسه.

بررسی اینکه یک کاربر یک جلسه دارد بسیار رایج است و ما احتمالا می خواهیم از این عملکرد در نماهای مختلف استفاده کنیم بیایید پیکربندی کنیم تا در دسترس نماهای مختلف ما باشد.

بیایید معلم خود را باز کنیم_وب.ماژول سابق و ما تایید ما را شامل می شود.ماژول سابق از نظر ما. بیایید همچنین توابع ما می خواهیم به در دسترس با تنها مشخص: [امضا شده در?: 1] .

بزرگ, در حال حاضر ما می توانیم امضا ما استفاده کنید? عملکرد کمکی در دیدگاه های مختلف ما.

با این کار بیایید برنامه خود را باز کنیم.اچ تی ام ال.الگو و ما تابع یاور جدید ما اضافه کنید برای نمایش لینک ما به سیستم خارج شوید در صورتی که کاربر وارد سیستم شوید. و اگر هیچ جلسه وجود دارد ما یک لینک به سیستم وارد شوید و یا تا نمایش می دهد.

مسیر الگو: معاونت/معلم_وب/قالب/طرح/برنامه.اچ تی ام ال.ایکس

سپس اگر به مرورگر برویم می بینیم که عملکرد کمکی ما کار می کند و پیوند خروج از سیستم را می بینیم.

اکنون باید راهی برای ورود و خروج کاربران ایجاد کنیم. بیایید با تعریف مسیرهای خود شروع کنیم. ما روتر خود را باز خواهیم کرد.ماژول سابق.

سپس اجازه دهید سه مسیر جدید اضافه کنیم. ما یکی را برای فرم ورود به سیستم خود ایجاد خواهیم کرد, یکی که هنگام ارسال فرم ورود به سیستم ارسال خواهیم کرد, و سپس یکی برای خروج از سیستم.

سپس اجازه دهید یک کنترل کننده برای رسیدگی به درخواست های جدید ما ایجاد کنیم. ما جلسه کنترل کننده جدید خود را فراخوانی خواهیم کرد.سابق . سپس اجازه دهید تعریف سه اقدامات ما نیاز: جدید, ساختن, و حذف.

اقدام جدید ما فقط جدید ما را رندر می کند.قالب اچ تی ام ال. در عمل ایجاد ما ارسال فرم ورود به سیستم را دریافت خواهیم کرد, کاربر را جستجو کنید, و اگر رمز عبور ارسالی با رمز عبور کاربر مطابقت داشته باشد, وارد سیستم می شویم. در غیر اینصورت با یک پیام به صفحه ورود به سیستم برمیگردیم.

برای شروع ما نیاز به یک راه برای نگاه کردن کاربر با نام کاربری خود. حالا که یک حساب کاربری داریم باید از این روش استفاده کنیم. ما حسابهای خود را باز خواهیم کرد.ماژول سابق. سپس بیایید یک تابع جدید ایجاد کنیم نام کاربری و در این ما فقط کاربر خود را با نام کاربری خود دریافت خواهیم کرد. چون نام کاربری می تواند صفر باشد بیایید بند تابع دیگری را برای زمانی که نام کاربری صفر است تنظیم کنیم و در این صورت فقط صفر برمی گردیم .

سپس اجازه دهید تابع ما به روز رسانی برای مطابقت در پارامترهای جلسه ما.

ما پارامترهای جلسه ما تحت کلید "جلسه" گروه, بنابراین ما می توانیم بازی الگوی که در اینجا. ما اونها را به یک متغیر اختصاص می دهیم پارامترها . سپس اولین کاری که می خواهیم انجام دهیم این است که کاربر خود را با عملکرد جدید خود در نام کاربری از پارامترهای نویسنده خود دریافت کنیم .

اکنون باید رمز ورود کاربر را با موارد ارسال شده بررسی کنیم.

اگر به اسناد مربوط به کمونین نگاه کنیم و به عملکرد چک گذر نگاه کنیم) می توانیم ساختار کاربر و رمز عبور ارسالی خود را منتقل کنیم.

این نیاز به یک کلید از هر دو دارد :کلمه عبور _ هش یا :رمز عبور رمزگذاری شده هنگام انجام مقایسه و از زمان ما این است :رمز عبور رمزگذاری شده این کار خواهد کرد.

چه خوب در مورد این است که اگر یک کاربر یافت نشد و ما در صفر تصویب تایید ساختگی اجرا می شود, که با توجه به اسناد را شمارش کاربر, با استفاده از اطلاعات زمان بندی, سخت تر.

در جلسه_کنترلر ما از یک بیانیه موردی با عملکرد چک _گذر استفاده خواهیم کرد. اجازه دهید اولین بازی در برابر مورد موفقیت با: تاپل خوب. و اگر یک کاربر تصدیق ما جلسه را تنظیم, قرار دادن یک پیام فلش به اجازه می دانم که در امضا.

سپس اجازه دهید او را به صفحه اصلی هدایت کنیم. حالا بیایید با یک خطا مطابقت داشته باشیم-وقتی رمز عبور ارسالی با چیزی که ما برای کاربر داریم مطابقت ندارد.

ابتدا اجازه دهید یک پیام فلش را برگردانیم تا بدانند مشکلی در نام کاربری یا رمز عبور او وجود دارد. و سپس اجازه دهید دوباره علامت را در صفحه قرار دهیم.

حالا بیایید عملکرد حذف خود را به پایان برسانیم که با کلیک کاربر روی پیوند "خروج از سیستم" ما فعال می شود. ما اتصال را می گیریم و در عملکرد حذف_صفحه قرار می دهیم. برای حذف جلسه کاربر. سپس اجازه دهید یک پیام فلش اضافه کنیم تا بدانند که از سیستم خارج شده اند. سرانجام به صفحه فیلم های خود هدایت می کنیم.

اکنون باید صفحه ورود به سیستم خود را ایجاد کنیم. ابتدا یک نمای جلسه _ نمای جدید ایجاد خواهیم کرد.سابق .

سپس بیایید الگوی خود را ایجاد کنیم. ما یک دایرکتوری جدید ایجاد, قالب/جلسه . و ما یک قالب جدید جدید ایجاد.اچ تی ام ال.اکس . من در فرم ثبت نام ما در اینجا چسباندن, اما اجازه دهید از طریق راه رفتن.

اول ما فرم خود را ایجاد می کنیم. و به جای استفاده از یک مجموعه تغییرات, ما در حال عبور در ارتباط ما. ما به فرم می گوییم تا داده های خود را به عمل ایجاد در کنترل کننده جلسه ما ارسال کند.سابق

و سپس [مانند: :جلسه] داده های فرم ما را در زیر جلسه کلیدی در پارامترهای ما ارسال می کند.

سپس ما فقط ورودی برای نام کاربری کردم, رمز عبور, و یک "ورود به سیستم" را فشار دهید.

مسیر الگو: معاونت/معلم_وب/قالب/جلسه/جدید.اچ تی ام ال.ایکس

حالا بیایید برنامه خود را باز کنیم.اچ تی ام ال.و پیوندهای ورود و خروج ما را با مسیرهای جدید ما به روز کنید.

مسیر الگو: معاونت/معلم_وب/قالب/طرح/برنامه.اچ تی ام ال.ایکس

حالا میتونیم امتحانش کنیم. اگر ما یک نام کاربری/رمز عبور دسته کوچک موسیقی جاز نادرست ارسال, ما دریافت پیام مورد انتظار ما. و سپس اگر با نام کاربری/رمز عبور صحیح وارد سیستم شویم-عالی کار می کند.

حالا که ما می توانیم ثبت نام و ثبت نام در, ما در یک محل برای پیاده سازی قابلیت های اصلی ما هستند - محدود کردن فیلم ایجاد و ویرایش دسترسی به امضا در کاربران. بیایید به کنترل کننده فیلم خود برگردیم.سابق

ما نیاز به ایجاد یک تابع است که چک در صورتی که کاربر یک جلسه. اگر وجود داشته باشد ما اجازه می دهیم که این اقدام ادامه یابد. اگر نه, اجازه دهید یک پیام نمایش داده و تغییر مسیر به صفحه اصلی.

بیایید این کار را با ایجاد یک تابع پلاگین که ما در اقدامات خاص پاسخ. ابتدا باید پلاگین عملکرد خود را ایجاد کنیم. اگر شما نمی دانید که چگونه پلاگین های تابع کار می کنند سپس قسمت 19 را بررسی کنید که من مقدمه ای را انجام می دهم. [https://elixircasts. io/intro-to-function-plugs]

عملکرد ما یک تابع خصوصی به نام چک اوت خواهد بود . در حال حاضر در داخل تابع ما از تابع دریافت _ جلسه برای بررسی وجود _کاربر_ فعلی ما استفاده خواهیم کرد.

اگر این اجازه می دهد تا کاربر فعلی ما با حساب. _کاربر! سپس اجازه دهید کاربر خود را به اتصال اختصاص دهیم. به این ترتیب ما می توانیم ساختار کاربر از اتصال بدون نیاز به انجام تماس های متعدد به پایگاه داده در هر زمان ما نیاز به دریافت کاربر دسترسی داشته باشید.

ما همچنین نیاز به نام مستعار زمینه حساب های ما.

اگر نه, اجازه دهید نمایش یک پیام فلش اجازه دادن به کاربر می دانم که نیاز به امضا شود. سپس به صفحه اول فیلم ما هدایت می کنیم.

و برای جلوگیری از فراخوانی شاخه های دیگر تماس بگیرید.

با تابع ما تعریف شده, اجازه دهید پاسخ پلاگین مشروط, زمانی که عمل جدید است, ساختن, ویرایش, به روز رسانی, و یا حذف.

بیایید به مرورگر برویم و تست کنیم.

و تلاش برای ایجاد یک فیلم یا ویرایش یک پیام خطای ما را به ما می دهد. برنامه فیلم ما همانطور که انتظار داریم کار می کند. نیاز به کاربران برای احراز هویت قبل از ایجاد یا ویرایش فیلم ها.

کریس اوهالوران

زیر همراه, اما من گرفتن این خطا در ورود به سیستم هستم (ثبت نام و خروج از سیستم تابع به عنوان انتظار می رود)

ققنوس.اکشن بند در پست / ورود به سیستم نتوانست یک فیلم منطبق پیدا کند وب.کنترل کننده جلسه.ایجاد بند برای پردازش درخواست. این به طور معمول اتفاق می افتد زمانی که یک عدم تطابق پارامتر وجود دارد اما همچنین ممکن است رخ دهد که هر یک از استدلال اقدام دیگر مطابقت ندارد. پارامترهای درخواست عبارتند از:

الکس

هی کریس, چه فرم در جلسه خود را جدید.اچ تی ام ال.به نظر می رسد همراه با عملکرد ایجاد در کنترل کننده جلسه شما.سابق ?

بیل میچل

فیلم بزرگ! در ابتدا شما اظهار داشتید که بسته های زیادی برای کمک به احراز هویت وجود دارد و شما در فیلم های بعدی کاوش می کنید? شما می دانید اگر کسانی که فیلم هنوز ایجاد شده است? اگر نه, شما ذهن لیست چه بسته های دیگر شما می خواهم پیشنهاد گرفتن یک نگاه? ممنون!

الکس

هی بیل, من چند به پایان رسید و چند در خط لوله کردم. من یکی با استفاده از ابرهوت و همچنین تایید بدون رمز عبور با حجاب انجام داده ام. نگهبان بسته دیگری است که ممکن است بخواهید به عنوان انسجام نگاه کنید. امیدوارم که این کمک می کند تا!

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.