Transcript for:
تحلیل و کاربرد ASP.NET Core برای احراز هویت

بنابرا خدا، سلام و عرض عدب و احترام خدمت همه فراگیران عزیز سایت فرادرز بنده علی بحارلو با اولین قسمت از دوره آموزش احراز حووییت با روش آیدنتی و روش ساده در افیدت نتکور در خدمت شما عزیزان هستم خب، توی این دوره قصد داریم که چه کار رو انجام بدهیم اولین چیزی که میتونیم در مورد این دوره بیاییم بگیم این هست که اگر شما توی یک ویب سایت اومدید و وارد شدید پس ابتدا چی میکنید؟ ورود میکنید خب وقتی که وارد یک ویب سایت میشید اگر شما مدیریت بشه دسترسیتون یعنی چی؟ شما یه کار برید وارد این سایت میشید درسته؟ وقتی که وارد این سایت میشید بخش‌هایی داره سایت ما مثلا بخش صفحه‌ی اصلی بخش مربوط به مدیریت خود سایت بخش مربوط به مثلا یک فروشگاه بخش مثلا ثبت خرید حالا که وارد این سایت شدید توی تاریخ‌چه‌های خریدتون و بخش‌های مثلا مدیریت مالی این بخش‌ها رو می‌خواید دست‌تسید داشته باشید یک بخش مثل پروفایل کاربرد بس ببینید حالا به صورت ساده من گفتم یک سایتی رو در نظر گرفتم که از این چار بخش تشکیل شده به صورت کلی من میخوام بگم ابتدا چی کار میکنم قبل از این که ورود بکنم به سایتم باید چی کار بکنم بیام سبتنام بکنم وقتی که شما با فرم سبتنام رو بروی شدید حالا از طریق موبایلتون از طریق ایمیلتون از طریق نام کاربریتون میاد سبتنام بکنید یک کلمه ی عبوری هم برای خودتون در نظر می گیرید و بعد میرید به مرحله ی ورود ورود می کنید اگر مدیر باشید به بخش مدیریت سایت می آید چه کار می کنید؟ هدایت می شید اگر کاربر عادی هستید به بخش پروفایل کاربر می آید و هدایت می شید اگر کاربر عادی هستید می تونید خرید هم انجام بدید می تونید صفحه اصلی رو هم ببینید و دیگر بخش ها اگر مهمان بودید می تونید بخش اصلی رو ببینید یعنی چه اگر مهمان بودید؟ یعنی اگر سبتنام نکردید ورود نکردید فقط بخش صفحه اصلی رو میبینید این سه قسمت رو نمیتونید ببینید پس یک مدیریتی من دارم روی کاربرم انجام میدم این رو ما توی همه ی ویب سایت ها داریم حالا توی ASP.NET میبینید چیکار میکنیم این رو ما میتونیم با دو روش پیاده سازی کنیم یک روش ساده خودمون بسازیم چیا رو؟ جدولی برای سبتنام و ورود جدولی برای بخش مدیریت کاربر بخشی برای مدیریت نقش های کاربر و بعد بیاییم بگیم آقا صفحه مثلا سبد خرید رو اگر یک کاربر با بخش دسترسی مدیریتی اومد وارد شد بتونه ببینیم اگر یک کاربر با دسترسی و نقش کاربر خریدار وارد شد بتونه ببینیم اما اگر نداشت کدوم از اینها رو پس اجازه مشاهده هم و دسترسی هم ندارن این روش ساده روش پیشفرزی که خود ای ایس پی دات نت به ما ارائه میدهد بخش ایدنتی هست میگه چکار کن؟ میگه ایدنتی رو نصب کن من میان برای بخش سبتنام و ورود و دسترسی و نقش و اینها رو میسازم تو فقط بیا مدیریت کن حالا توی ای ایس پی پس این دو مورد وجود داره ما مخوایم ازش استفاده بکنیم چون این بحث یه جورایی از خودش برمی گرده به بحث مدیریت امنیت سایت از یه بخش البته خب پس هم میتونه امنیت رو تضمین بکنه هم میتواند سایت من رو داینامیک بکنه که کابرها وارد میشوند چه کارهایی رو میتونن انجام بدن چه کارهایی رو نمیتونن انجام بدن اگر مدیر وارد شد چه کار بکنه اگر مثلا معاونی داشت تعریف کرد دستسی معاونت حالا ممکنه ای سایت فروشگاه نباشه یک سایت سازمانی باشه خب وقتی که سایت سازمانی تعریف میکنی مدیر آمل اون شرکت یک دستسیه کلی میتونه داشته باشه معابنتش میتونه یک دستسیه کمتر از مدیر آمل داشته باشه یک سری بخشا رو نتونه ببینه به همین ترتیب میاد زیر دسته میشه مثلا مدیر بخش اداری، مدیر بخش بازرگانی حالا به این صورت شرکت رو تقسیم بکنیم می این پایین بعد می رسه به کارمند عادی یا کارمند مثلا رتبه یه درجه یک درجه دو همینطور دسته بندی ها تقسیم می شه و می گیم به چه بخش های دسته سی داشته باشن به چه بخش های دسته سی نداشته باشند پس ببینید این رو ما بهش می گیم احراز حوییت اکی کاربر اکس وارد می شه و کابر Y همزمان با هم ممکنه دو دستسی متفاوت داشته باشند حالا میخواییم این رو بیان و توی ASP.NET Core پیاد سازی بکنیم اول به روش ساده میمیجاد میکنیم وارد محیط ویژیال میشیم وارد این بخش میشیم ازش میخواییم که یک پروژه جدید رو بیاد برای ما ایجاد بکنه منتظر میمونم تا صفحه مورد نظرم رو برام بیاد و لوڈ بکنه اینجا من میخوام یک پروژه ASP.NET ایجاد بکنم که در کنارش کر هم داخلش به کار رفته باشه پیدا کنم این گذینه رو اینه هاش از نوع ویب اپلیکیشن هم میخوام باشه بس این مورد انتخاب میشه میریم مرحله یه بعد میگه یک نام انتخاب بکن توی این قسمت بیان و آسانتکیشن تعریف کنم اینجا رو میگم میگم که این برای احراز حوبیه حالا این آسانتیکشن ساده باشه بعد آسانتیکشن آیدنتیسی رو در نظر می گیریم و می گم که برو مرحله یه بعد بخش آتنتیسی رو من می آمده چی کار می کنم از خود آسانتیکشن آیدنتیسی استفاده می کنم حالا توی پنجری جدید ما داتنت کر داریم کار می کنیم دیگه خب داتنت کر اسپی داتنت کر پنج رو هم که می زاریم باشه بذارید اصلا به یه روش دیگه کار کنیم این روش رو بیاد ما به صورت برونسپاری data access layers رو بیان می‌چاد بکنیم چه کار کنیم؟ من این پنجره رو می‌بندم back می‌دم می‌آم اینجا همینجایی که بودیم من می‌آم و درخواست حالا جستجو می‌زنم s o رو اینجا این blank solution که اینجا تعریف می‌شه رو می‌آم انتخابش می‌کنم دارم می‌گم یک solution خالی ایجاد کن برام یه نام براش انتخاب کنیم می‌آم و توی این قسمت authentication رو اینجا انتخاب می‌کنم او می‌آم و می‌نویسم توی این قسمت پس انتقلیشن بعد هم می‌گم که همون فراد از identity باشه و ایجاد رو می‌زنم سولیشن خالی برای من اومد و ایجاد کرد توی این قسمت ببینید یک سولیشن خالی حالا داخل این سولیشن می‌آم و کلیک راست می‌کنم می‌گم اضافه بکنه یک new project چی باید اضافه کنم؟ می‌تونم اون ASP.NET Core رو حالا اینجا اضافه بکنم ولی نامش رو UI می‌ذرم ارتباط کاربری میرم برای مرحله بعد میگم چی باشه از همون داتنت کر پایپ هم استفاده بکنه اینجا میگم همراه با گذینه های MVC میخوام باشه میام انتخابش میکنم و هیچ چیز رو تغییر ندادم دیدید فقط گفتم که اسمی داتنت کر پنج باشه و هاوی MVC باشه تموم زدم رفتم مرحله بعد منتظر میمونم تا این یو آی من ایجاد بشه و بتونم ازش استفاده بکنه ایجاد شد و من میام اینجا این یو آیو میبندم دوباره برم میادم توی خود کلیک راست اضافه میکنم دوباره پروژه جدید این بار دنبال چی میگردم کلاس چی میخوام یک کتاب خانه میخوام پس دنبال کلاس لائبری میگردم کلاس لائبری دات نت نه من دنبال ده داتنت کر می‌کنم چون اونها فرامورک هستند اینجا داتنت کر می‌کنم class library.net.cor انتخابش می‌کنم یک نام براش می‌گذارم من می‌گم data-access-layer مخفف نوشتم و ایجادش می‌کنم این class library ایجاد شد برای من این کلاس اول رو می‌بندم و می‌یم توی این قسمت کلاس یک رو حذفش می‌کنم چرا؟ چون پیشفرض من به ایش نیاز ندارم میخوام یک نام متناسب با اون چیزی که خودم مدد نظرم هست بیام انتخاب کنم حالا توی این Data Acted Layer من میام و Add میکنم چی رو؟ یک کلاس جدید خودم یک کلاس جدید میسازم البته بذارید یک پوشه اول ایجاد بکنم یعنی Add بکنم یک New Folder توی این قسمت یک نام برای این قسمت میام و انتخاب میکنم مثلا من میگم اینجا دیتا کانتکست باشه کانتکست داخل این دیتا کانتکست چی داریم؟ من یک کلاس اضافه می کنم می گم یک کلاس با نام اپ اپ چی بذار؟ کانفیگریشن برای تنظیمات بیاییجاد بکن پس نشون می ده؟ دارم چی کار می کنم؟ برای اپلیکیشن ویبم دارم بیام و یک کانفگریشن تعریف میکنم اوته این از نوع پابلیکه اینو همین اول بار اضافه کنین خب این زخیره یک کلاس دیگه هم نیاز دارم اد میکنم یک کلاس جدید این بار از نوع دیتا بیس میخوام تعریف بکنم میگم یک دیتا بیس اینجا برای من بیا تعریف بکن و برای کانتکست باشه کانتکست این رو هم اینجا اضافه بکنم باز این رو هم پابلیک میکنم و زخیره و آخرین کلاس add class ما یک حالت دیتا بیس context factory داریم یعنی پیشفرز داریم یعنی تنظیمات خودمون رو داریم یک تنظیمات پیشفرز رو داریم پس میگم database برای context و توی حالت factory این ایجاد شد این هم pop لپ میرم سراغ اپ کنفیگریشن توی بخش اپ کنفیگریشن اینجا من باید بیام برای خود اپم تنظیمات اولیه تعریف بکنم یه متود عمومی میزنم میگم پابلیک به نام چی نام گذاری میکنم میگم اپ کنفیگریشن این رو فراخانی کن و اپ اکولاد بازو بسته میرم داخل این وسمت میگم اول از همه یه نکته نوعش رو نمیدونم چیه ورم میگیرم و میگم که Con بیا در نظر بگیر برا حالت Builder ایک Config Builder رو من اینجا در نظر میگیرم میگم برابر با مقدار New فراخانی کن چی را فراخانی کنه؟ Configی که مربوط به خود همین Builder خواهد بود دنبال Configuration خواهد بود Configuration Configuration رو از نوع Builder باید در نظر بگیرم نمیشناسدش چی کار بکنم؟ میام این بالا میگم یوزین کنه، فراخانی بکنه چی رو؟ از گذینه های مکروفا میام انتخاب کنم و میگم توی متوده هایی که من خواهم داشته دارمش؟ نه من هیچ متودی اینجا ندارم چرا؟ شون نیومدم این تیتی فرینوورک رو نصفش بکنم حالا که نیومدم این رو حصفش میکنم میام همین پایین ادامه میدم تکمیلش کنم تا خودش بشناستش پس میگم یک configuration رو من اینجا در نظر دارم یاد سازی بکنم میخونمش و میگم از نوعه filler خواهد بود به این صورت تناطیز باز و بسته سمکاله میام اینجا موس رو نگهداری میکنم میگم فراخانه بکن میگه نمیشناستم همچین چیزی رو قطعا درستم هست نمیشناست فعلا نمیدونه این کارفی بیلیلرکه منجا در نظر گرفتم چیه چیزی که الان اینجا هست ما بحثمون الان اینه که این بلر رو بعدن ایجادش بکنیم حالا من ادامه میدم میام این پایین میگم یک مسیر میخوام ایجاد کنم نوعش رو نمیدونم اما میدونم پس خواهد بود نامش رو پس ندارم و میگم از پس یه استفاده بکن توی این قسمت نمیشناستش من میام و اینجا میگم مسیدهی کن با استفاده از ورودی خروجی ها میاد اینجا و اضافهش میکنه حالا من دستوری رو اینجا باید بهش بدم دیات میاد و combine استفاده میکنم combine پرانتز باز و بسته دنبال یک روت اصلی هم دنبال یک مسیر هم میاد و میگم که چیکار کنه از directory استفاده بکنه directory رو انتخاب میکنم و بهش میگم که نقط چه کار کن؟ بخان چی رو بخانه؟ توی این قسمت get current directory پس از اینجا combine directory dot get current directory میگیم این رو بخانه این یک کلاسه پرانتز بازو بسته بهش میدیم که دریافت بکنه اطلاعات رو و من اینجا ایک قسمت double quotation باز میکنم چون بعدم باید بهش بیان و یک نام اختصاص بدم این نامی که اینجا نیاز درج بشه من چون قرار اطلاعات دیتا اکتلایه رو بفرستم به سمت یو آی کجا اینجا از این کلاس به این یو آی قرار بیام اطلاعاتم رو بفرستم با استفاده از جی فون میام کار میکنم اینجا یک اپ settings.json داره این app settings.json رو من میام اینجا کپی میکنم عنوانش رو کلش رو انتخاب میکنم کپی بر میگردونمش اینجا توی این رسمه میگم از app settings.json بیاید تلات رو بخوان این تا اینجا تنظیم شد پس مسیر رو من بهش دادم گفتم دراره از این data access layer بره به UI متصل بشه با استفاده از این فایل json این کار اومدم و انجام حالا میام سراغ یک کانفیک بیلر که اون بالا ساختیمش نقطه فراخانیش میکنیم میگیم add قرار اضافه بشه چی قرار اضافه بشه یک فایل دیسان میگم بیا و اضافه بکن اما از نوع فایل گفتم بس یک فایل هم بهش اختصاص میدیم پرانتز بازو بسته دنبال مسیر باید بگردیم مسیر رو داریم دیگه توی پست ریختیم و نگهداری میکنیم و میگیم برای اجبار بودنش فالس بشه پس اومدم گفتم به کانفیک بیلدر این بالا بیا وچکار کنیم فایل جیسان رو اضافه بکن که این کار رو انجام دادم یک متغیر روت میسازم میگم ورد نمیدونم نوعش چیه روت مساویه با کانفیک بیلدر رو صدا میزنم و میگم که چیکار کن build بکن بیا و برای من build رو انجام بده پرنامه تا بازه بسه سیمیک کالن میام خط بعدی قراره توی این قسمت من یک connection string میام ایجاد بکنم پس میگم یه متقیری که نمیدونم نوعی چیه ولی نامش رو میذارم app setting بیا در نظر بگیر مساویه با این app setting که اینجا ایجاد کردم بهش میگم که روت از روت کمک بگیر و سیکشن بخون برای من سیکشن رو در نظر بگیر اینجا سیکشن بیا در نظر بگیر این سیکشن که اینجا در نظر میگیره پرانتز باز و سر میام و دبل کوتیشن میزنم میگم قراره به یک کانکشن استرینگ متصل بشه که یک نامی رو من باید بهش القاب بکنم بهش معرفی بکنم اگر بیام و توی اپ سیتینگز اینجا وارد بشم فیلن ندارمش بعد باید ایجادش بکنم حالا البته یه نکته توی خود تنظیمات ستارت آف هم باید بردم بیان و ایجادش بکنم من میام اینجا تعریفش میکنم میگم یک کنکشن این کنکشن اولیه تعریف میشه که برابر با نو نکته چیه؟ هر نامی که دوست دارید مثلا من میگم دیفالت باشه این دیگه دست خودمونه هر چیزی که انتخاب کنیم اینجا مشکل نداره پس دیفالت کنکشن من میام اینجا در نظر میگیرم البته connection این هم برای این رسمه انتهاش رو هم میبندم حالا میام اینجا چون از نوع اسکریل دارم استفاده میکنم میگم یک اسکریل کانکشنی باید بسازم حالا بعدا ایجادش میکنم من مینویسم اینجا یه اسکریل کانکشن ستیرینگ میسازم که برابر با این اپ ستینگی که این بالاست اینجا کوپیش میکنم میام این پایین بهش معرفی میکنم میگم به این بیا و متصل بشه به این متصل بشه باید چه کار کنه یک value اینجا در نظر بگیره و پس میان و value رو توی این رسمت براش تعریف میکنم و سیمکاله میگذارم آقا کار اینجا تموم من دیگه اینجا کاری ندارم فقط بعد از این public app configuration که اینجا نوشتیم یه مقداره public string میخوام تعریف کنم دیگه میدونم نوعش چیه به نام sql connection string کجاست؟ اینه هاش دیگه این بالا مگه نیست میگم اینجا تعریفش میکنم میگم این رو تعریف میکنید لطفا و میگید از نوع get set متقیره و به صورت یک پراپرتی تعریف میشه پس این رو من تعریف کردم این مقداری که اینجا تعریف شد من به عنوان app configuration تعریفش میکنم کل این رسمند دو تا نکته مهم داره یکی این که app settings که اینجا در نظر گرفته از نوع json ممنون باید توی مسیر باشه و بعد هم این connection strings که اینجا تعریف شده این خیلی مهمه این دوتا نکتر رو اینجا باید در نظر داشته باشیم این رو ایجادش میکنیم چون وجود نداره configuration builder وجود خارجی نداره اینجا باید بیم و ایجادش بکنیم من این رو زخیره میکنم میام میام سراغ database context میام اینجا اینجا چه کار بکنم از اسمش مشخصه که قرار یک حالت دیتا بیسی باشه درسته؟ بیام چه کار بکنم؟ بیام اینجا و مقادی رو براش ترقی کنم public class database context که خوبی چیز تکلیفش مشکل است اما نکتهی که اینجا وجود داره من میخوام این رو بیام وراستش بکنم بگم از یه کلاس به نام db context db مخفف database context هم که بادش مشکل است این رو میگم مشتق بکن نمیشنسته چون entity framework نداریم توی این قسمه شما چی کار میکنید؟ اگر خواستید میتونید این بالا کما اینکه نسبش نکردید از ماکروسافت کمک میگیرید و میگید که من میخوام انتیتی داشته باشم از نوع فریمورد ببین نمیشنست چی کار میکنید؟ اگر خواستید میتونید اینجا تکره هم ایجادش بکنید چون این نمیشنستش من میام توی پروژه توی وابستگی هایی که اینجا وجود داره add میکنم و از پکیج های مربوطه کمک میگیرم توی جستجو دنباله چی بگردم؟ گفتم انتیتی ببینید خودش اولی اووردی این رو من نسبش میکنم حالا نسخه هاش اینجا بسته به سیستم شما داره من میان و مثلا اینجا 5 رو کلن انتخاب میکنم گم نسخه 5 که متناسب هم باشه ببینم اگه خطا نده و نسبش کرد که حله اومد و اینجا من میپذیرم شرایط رو و میگم همه این ها پذیرفته هست بیا انتخابش بکن ببینی اینجا خطا میده درسته؟ الان دیگه خطاش برطرف شد این رو شناخ دی بی کانتکست رو هم شناخ این هم پرست مشکلش برطرف شد اومد دی بی کانتکست رو انتخاب کرد حالا من میام داخل این رز مشتبهش کردم دیگه ارسبری شد میام و میگم پابلیک یک کلاف بنامه اپشنز مسئله اپشنز بلده مسئله بازشمه کن میگم داخل این قسمت یه متود بساز از نوع public به نام options و اکولاد بازوبسته میام داخل این قسمت میگم من یک settings دارم settings رو اینجا تعریف میکنم مساویه با new چی اگر من اینجا بیام و app configuration رو درخواست بدم بگم پرانتز بازوبسته این رو میشنسه میام این پایین میگم توی این قسمت میخوام بیام و چکار بگم اتا الان این مقادی رو مثلا مثل settings رو نمی‌شنسه فیلن چون وجود خارجی نداره می‌ریم یکی‌یکی خطا رو پایین می‌بینیم به چه صورت می‌شنه می‌گم یک option build مخففش OPS می‌نویسم options مخفف option این رو می‌نویسم OPS build حتی builderش کنم می‌گم یک builder دارم مساویه با new new چی؟ db درخواست می‌دم data d database چی رو می‌خوام؟ context اما از نوع options builder رو درخواست میدم علامت کوچکتر بزرگتر میگم که آقا مگه من database context ندارم بهش معرفی میکنم و بعد میگم پرانتز باز و بسته اینه مرحله بعدی دوباره همون option builds رو میام اینجا تعریف میکنم یعنی OPS builder رو میام اینجا تعریف میکنم و بهش میگم چی میخوام استفاده بکنم use از چی ایسکیو ال ایسکیو ال سرور دارم اینجا دیگه پس میام و میگم ایسکیو ال سرور رو به هم بده پرانتز بازو بسته ستینگی که اون بالا تعریف کردیم رو میام اینجا کوپی میکنم اینن و به این بخش منتقل میکنم وقتی از این استفاده میکنه من داخل این قسمت چی قرار دادم ایسکیو ال حتی ایسکیو ال با حروف کچیک بود همش دیگه ایسکیو ال کانکشن کجا رو دارم میگم دقیقا اینجا این رو دارم میگم کپیش می‌کنم می‌آم اینجا و معرفیش می‌کنم می‌گم این SQL connection string رو بیا اینجا در نظر بگی معرفیش کردم حالا که معرفی شد DB رو درخواست می‌دم البته اینجا نامگذاریه DB options می‌نویسم اینجا options این DB options رو هم نداریم ما دقیقه داشته باشید چون خطا می‌ده یعنی نداریم OPS blur می‌آم درخواستش می‌دم حالا که فراخوانی شد با options میام تعریفش میکنم و تمام حالا توی تمام این خطایی که اینجا هست داره خطا اعمال میشه میام خارج از این قسمه یعنی این public تمام میام اینجا یک متود عمومی تعریف میکنم public نامش رو میذارم db context option blur این رو و بهش میگم که چی علامت کچکتر بزرگتر in database کانتکست که من اینجا دارم رو بخون میخونه حالا که دریافتش کردم یک نام بهش بده گفتیم OPS Builder رو داریم میگیم این نام رو بخون تموم به صورت Get Set ببینی خطا برداشته شد خطا از روی این OPS Builder برداشته شد حالا بعدی بعدی رو برمیگردونم به OPS Builderی که برای چی استفاده کردیم DB Context Option استفاده‌اش کردیم پس من می‌آم اینجا توی انگلس من می‌گم عمومی هست این متون DB Context Options این‌بار این رو انتخاب می‌کنم DB Context Options علامت کوچکتر، بزرگتر Database Context رو دوباره بهش معرفی می‌کنم می‌گم نام براش انتخاب کن نام DB Options که اون بالا نوشتم DB البته Options نوشتم ببینی خط‌هاش برداشته شد من این رو بنویسم اوه دیگه جا get set درسته سرور رو که داره اینجا خطا میده چون ما واقعا use sql server رو نداریم اصلا نیست sql server فعلا حالا اون رو بعد اضافه شویم خالج از این رسمه داریم دیگه این بخش رو کای ندارم این تموم شد درسته خالج از این رسمه میان و یه متود عمومی دوباره تعریف میکنم از نوع استابودن یعنی هیچ پویایی نداره فقط وجود داره برای این که بتونیم به صورت یک باره ازش استفاده کنیم static نامش رو من میم اینجا انتخاب میکنم options build افشنز build انتخابش ops نامگذاری کردیم میگیم انتخابش میکنیم میگیم مساویه با مقدار new و امتغیر رو هم و یه مقدار پابلیک دیگه اینجا داریم برای دیتابیس کانتکست میگم انتخابش میکنم پرانتز بازو بسته db کانتکست رو انتخاب میکنم توی این قسمت البته از نوع افشن بودن یعنی options رو بهش اضافه میکنم علامت کوچکتر بزرگتر database context رو من بهش معرفی میکنم نامش رو چی بگذارم options حروف کوچک که برابر با مقدار مشتقمشه base options رو من اینجا میخونم توی این قسمت میام این رو بهش میدم و حتی میتونم هیچ متغیری فیلن داخلش تعریف نکنم باش که این هدف فقط ایجادش میکنم حالا دیگه پایین این قسمت اینجا من فیلن ندارم بعد اضافه اشم ایجاد میکنم به این صورت ببینید بتونم یه بطا قیر پابلیک ایجاد کنم و بگم دی بی ست کنه علامت کوچکتر بزرگتر کلاسی که برای مثلا یوزرم برای رولم برای صفحه ورود و این هم در نظر میگیرم میام اینجا بهش معرفی میکنم که بتونم ازش جدول ایجاد کنم توی اسکر سیفر حالا فیلم باشکایی ندارم این هم برای این قسمت من در نظر گرفتم زیر این قسمت میتونید یک پروتکتید رو ایجاد بکنید پروتکتید ایجاد میشه توی حالت override void هم میشه توی این قسمت یعنی هیچ خروجی نداره و بازنویسی هست به نام on توی model و تا توی حالت creating هست پس میم و تعریفش میکنیم اینم برای این قسمت اومد و ده نظر گرفته شد پرانتز بازو بسته میخونیمش میگیم که model builder بخون یه نام بهش بده model builder رو تعریف میکنیم و توی این قسمت میگیم آقا توی حالت base تعریف بشه و خود این کل��س فراخانه میشه و بازنویسی میشه روی یه قسمت مادر بیلدر یعنی فقط بازنویسی و فراخانه داریم من چیز رو نمی سادم این وجود داره توی خود کر وجود داره من فقط بازنویسیش کردم که اینجا فراخانه بشه فقط یک Use SQL Server اینجا الان خطا میده این SQL Server رو باید بسازیمش چطوری؟ میم دوباره تو همون مسیری که بهتر فکر میکنم اینجا باز باشه، بله میم میگم که من از SQL کمک میخوام خب SQL رو search میکنم ببینید اینچه فرامویک coreه SQL Server رو فراخوان کرده همون نسخه ۵ رو اینجا انتخاب میکنم و نسبش میکنم منتظر میمونم تا فراخوانی ها انجام بشود و من نسب رو بتونم کامل بکنم توی این قسمت داره درخواست نصب رو ارسال میکنه بله من اینجا میپذیرم شرایطی که داره اعمال میکنه رو و یه مرحله دیگه باقی مونده تا اکفپت کنم و بپذیرم و بریم برای نصب نهایی میپذیرم خب اومد نصب کرد میم اینجا البته این مورد که نه اینجا بود ببینید یوز اسکر سلور خودش دیگه خطاش رو برطرف کرد به محض اینکه نصبش کرد اینجا هم زخیدم حالا میریم برای حالت دیتا بیس کانتکس فکتوری توی این قسمت وارد بشیم اول اینو ما اینجا توی این بخش قراره بیم و مشتق بکنیم یه دو نقطه اول این قسمت قرار میذارم آی دنبال انترفیز هستیم میخواییم چیکار کنیم دیزنگ کنیم انتخابش میکنیم میبنیم و توی این قسمت بر اساس تایم رفتار میکنیم و دی بی رو هم درخواست میدیم دی بی کانتکس دی بی کانتکس خب اینم هست اما برپایه یه factory هست یعنی پیش برزه پایه شما امتحان به آیه بزرگ هست اشتباه نشه من این رو اومدم اینجا و مشتقش کردم انتخاب میکنم میگم از این فرنورک بیا کمک بگیر کمک میگیر این بالا using English رو استفاده کردون اینجا هم فراخانی شد اما علامت کوچکتر بزرگتر من database context رو باید بهش معرفی بکنم پس میام اینجا و بهش پاس میدم توی این قسمت میگم database context میام این پایین میگم آقا public database رو درخواست میدم از نوع database context البته database context رو که اینجا داریم از نوع ایجاد کردن هست یعنی چی؟ یعنی قراره بیاد و create کنه create چی؟ database context این رو البته اینجا درخواستش میدم create db db چی؟ context که برابره با یک مقدار string و آرایه ای هم ارسال میشه به این سمب ARGS به صورت یک آرگومان ارسال میشه این هم از این میام این پایین میگم چی داره؟ میگم اپ کانفیگریشن رو داره نامش رو چی بذارم؟ APP اپ چی؟ یه نام بذارم کانفیک بذاریم با سیه بذار مثلا این نامش مساویه با نیو نیو میکنم اپ کانفیگریشن رو درخواست میدم پرانتز باز وسته میبنده میشه متغیری دارم که نمیدونم نوعی چیه و OPS Builder تعریف میکنم یادتونه OPS Builder رو مساویه با New New چی؟ DB Context رو من اینجا میام و میخونم Context که البته از نوع Options باید باشه و روی Builder تمرکز بکنه اومدم فراموش علامت کوچکتر بزرگتر Data بیس کانتکس رو بهش معرفی می کنم و می گم که پرانتز باز و بسته می بندن الان اینجا چی شد؟ نمی شنسه اینتیتی فرینورک که کور رو اضافه می کنم می شنستش حله؟ می آم پایین می گم که او پی ایس بیلدر رو داری درسته؟ بیایی یوز کن اسکریل سرور رو بهش معرفی کن اسکریل سرور من بر اساس اپ کانفیکی هست که این بالا تعریف کردم نقطه اسکریل چی؟ و می آم میگم برگردون مقادی رو ریکن چی نیو میکنم نیو جدید میدن خودجه جدید میزنم میگم دیتا بیس کانتکس رو داری بیا بازو بس کن پرانتز رو براش و او پی ایس بیلدر رو داخل ای سدا بزن بگو هرچی آپشنز داره به من برگردونه تموم این دستور رو هم برای پیشفرز خود دیتا بیس کانتکس فکروری در نظر میگیرم زخیر سازی اینجا فقط یک کانفگریشن بیلدر رو نمیشنسته درسته؟ چرا نمیشنسته؟ اینجا تان فیگوریشن نمیشنسته میمیم چی کار بکنیم اینجا بحث انتیتی فرینورکه این رو من بر میدارم میم اینجا اضافه میکنم حالا البته یه نکته ایجا مونده اون هم این که داخل اپ ستینگی که اینجا داریم ما نیومدیم و کانکشن سترینگیمون رو تحریف بکنیم من میام این بالا ایدابل کوتشن باز بکنم کانکشن سترینگ رو میخونم خودش اومد و برا من به این قالب تبدیلش کرد من بیام اینجا میگم که دبل کتشون رو باز کن دیفالت کنکشن یادتونه اینجا نامگذاری کردیم اینه هاش میگیم اینن این نام رو بردار و اینجا قرار بده میاد قرار دو نقطه خب دو نقطه خودش دبل کتیشن رو باز میکنه اینجا از من یک سرور میخواد سرور رو میام و بهش میگم چی مساویه با مثلا نقطه قرار بده دات قرار بده سیمیکاله یک دیتا بیس از من میخواد من میگم بیا و اینجا دیتا بیس رو مساویه با نمیدونم حالا یک نام باید انتخاب کنیم مثلا db چی db test db test رو من اینجا میام در نظر میگیم سیمیکالن رو هم میذارم در نظر میگیریم برای امنیتش underline برابره با مقدار true در نظر میگیریم این میشه دسترسیه به اسکل سرور ip ادرس یا همون سرورتون نام دیتابیس و اگر یوزر آیدی و پسفورت هم داشتید اینجا اضافه میکنید و تنظیمات امنیتی دیگه که نیاز نداریم ما اینجا میان و اضافه میکنید زخیر سازی بعد میگردیم توی این رسمت ببینید اینجا الان کانکشن استرینگ من تعریف شد فقط این بخش کانفیگوریشن بوده باقی مونده این رو هم میتونیم پکیجش رو بیم اضافه بکنیم میم و کانفیگوریشن رو همینجا جستجو میکنیم البته از دوی میکروسافت است پس من باید اینجا ببینم چی ها پیدا میکنم سرس کنم سریع تر بهش میدهسم ببینم پیداش میکنه اینها این مورد رو باید بیان و اضافه بکنیم به پروژه خودمون تا اون خطایی کانفیگوریشن رو بردارم ولی یک نکته جیسانش رو هم داریم یعنی اگر شما اومدی و اینجا گفتید کانفیگوریشن در جیسان من میخواهم دریافت بکنم اینها این رو هم میگم بیا و نصبش بکن شرایط ما رو آماده می کنه می پذیرم همه پکیش ها رو اومد و اینجا داشته الان اینجا ببینید دیگه خودش برطرف داشته configuration builder رو اومد برطرف داشته الان قاعدتا نباید هیچ خطایی داشته باشیم من یک با build میکنم پروژه رو اگر با موافقیت build شد یعنی هیچ جا دیگه خطا نداریم و میتونیم بریم بخش تنظیمات خود UI امون اون رو هم من تنظیم بکنم برای چون حالت ساده، ماید از template ها استفاده بکنیم تا بتونیم داده ها رو رد و بدل بکنیم در بین صفحات کنترولر نیاز هست که اون کار انجام بدهیم اینجا هم مشکل برطرف شده البته اینجا دومین اصفش میکنم ببینم بازم خطا میده یا اینکه خیلی بله با موفقیت بیلد شد همه صفحات رو میبندم میام از این قسمت دیگه خارج میشم دیتا اکسل دایی کاری ندارم میرم سراغ یو آی وارده ستارتاپ میشم درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید؟ درست دارید من باید بیام و سیشن ها رو دریافت بکنم آیا دارم توی این قسمت بس من میام و کار میکنم برای این بخش میام و درخواست میدم که بیاد برای من توی این قسمت بخشی که مربوط به این تی فرینورک بود رو اضافه بکنه توی این قسمت نداره قاعدتا باید بیام اضافهش بکنیم مثل همون روش من میام اینجا درخواست میدم این تی رو درخواست میدم میگم که بیا نسخه پنزش ببریم من نصب بکن توی این قسمت میپذیم همه شرایط رو اینجا در خطا میده این بخشی که الان خودمون اومدیم اینجا دستی اضافه کردیم پچاره خطا شدیم ایک پرانتز باز و بست بذاریم تا درست شد و همچنین میتونم بیام کوکی اضافه بکنم بیام و بگم که از کوکی ها هم استفاده بکن توی این قسمت این برای این پایین میامون بالا توی سرویز ها هم اینجا database contextی که استفاده کردیم رو اول بهش معرفی میکنیم البته یه نکته من اینجا میام توی وابستگی ها و میگم به این پروژه یک reference رو بیاد اضافه کنم اون dicta access layer رو بهش اضافه میکنم این از این ببینید اون اومد اینجا اضافه شد و بعد میام توی این قسمت میگم من سیرویس ها رو میخوام بخونم add کنم چی رو میخوام بیام اینجا اضافه کنم اون db contextی که ما داشتیم رو میگم بیاین اینجا اضافه کنیم علامت کوچکتر چی رو باید بهش معرفه کنم یک دیتا بیکس کانتکست رو میان بهش معرفه میکنم کما این که نمیشنستش میگیم بیا و توی دیتا اکسز لایر این یوزینگش رو فراخوانیم حالا که اضافه شد توی این قسمت من میام یک پرانتز بازو بسته میکنم میگم option دارم خوب اینجا البته option میام و میگم که options رو براخانه بکن توی این بخش که اشاره میکنم به چی؟ به این که option من از چی استفاده میکنه؟ use SQL server میاد استفاده میکنه و پرانتز بازو بسته خوب SQL server رو نمیشنست دوباره اینجا چه اتفاقی باید بیفته الان دیگه باید بگیم که از این فرینورک کوره اسکل سرور بی استفاده کن خودش اینجا فراخانیش میکنه حالا که فراخانیش کردم توی این قسمت میام میگم پرانتز باز و بسته باید کانفیک کنه توی این قسمت پس من میام و کانفیکوریشن رو فراخانی میکنم کانفیکوریشن دا میخوام بخونم چی رو کانکشن استرینگ رو من میام اینجا در یافت میکنم که برابر با پرانتز باز و بس دبل کوتیشن این طرف بیان موس رو بیارن و ببینیم برابر با چیه به نظرتون برابر این نامی که توی دیسان گرفتیم که همونجا توی قسمت خود رافگوریشنمون هم تنظیمش کردیم پس میگم Default Connection میگم این رو باید شما بخونی توی این قسمت پس میاد اینجا دریافتش میکنه داریم سرویس بعدی من یه سرویسی هم برای بخش خود دیسان میخونمش و میگم باز و بسته به صورت یک option در نظر میگیریم میخوام بیام و بگم این مقدار مثلا OPTX حال مخففه option باشیم این اشاره میکند به چی؟ باز و بسته میگم و فراخانیش میکنم میگم آقا من توی این رسپت میخوام از کوکی استفاده بکنم اجازه میدم استفاده بشه و در مصابیه با توی اجازه دادم استفاده بشه توی و انتهااش رو میبندم به سرور میتونم یک سرویس مموری کش بیام استفاده بکنم بگم add مموری کش رو بیام اینجا اضافه کنم چیز خاصی هم بهش معرفی نمی کنم اینم برای ماست البته خود این مموری کش یه حالت دیگه ای هم داره که میتونیم اینجا بیام و مموری کش حالت add distribute مموری کش رو بیام اینجا فراخوان میکنم برای این سرویس دیگه ای که به کارمون بیاد و بتونیم ازش استفاده بکنیم. تمپ تیتا ها هم میتونیم کار بکنیم. میتونیم اینجا یک سرویس اضافه بکنیم.

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