• ASP.NET Core 1 – قسمت 35
ASP.NET Core 1 – قسمت 35
1395/02/09 - 09:49:41 // MVC 5 & 6 // 1 نظر // 3767 بازدید

تا به اینجا کاربر هر کاری بخواهد در سطح پروژه میتواند انجام دهد . میتواند یک رکورد رستوران جدید بسازد ، Edit کند و خلاصه به اندازه کل توان سیستم دستش باز است . سناریوی من این است که کاربر Login نکرده فقط بتواند لیست رستورانها را ببیند.

بسمه تعالی

ASP.NET Core 1 قسمت سی و پنجم

تا به اینجا کاربر هر کاری بخواهد در سطح پروژه میتواند انجام دهد . میتواند یک رکورد رستوران جدید بسازد ، Edit کند و خلاصه به اندازه کل توان سیستم دستش باز است . سناریوی من این است که کاربر Login نکرده فقط بتواند لیست رستورانها را ببیند. این منطبق با Authorize Attribute بدست می آید . این Attribute را میتوان برای همه Controller یا بعضی از Action ها قرار داد.اگر یک متد دارای این Attribute باشد ، قبل از اجرا شدن روالهای Login کنترل شده و اگر کاربر لاگین نباشد ، به صفحه لاگین ارجاع داده خواهد شد.

اگر این Attribute را بدون هیچ پارامتری بکار ببریم فقط لاگین بودن کاربر کنترل خواهد ، ولی اگر از طریق پارامتر Role کاربر هم مشخص شود ، عملن فقط کاربرهای در آن Role میتوانند آن Action را اجرا و نتیجه آنرا داشته باشند.

اگر همه یک Controller را از طریق این Attribute برای کاربر Anonymous غیر قابل دسترسی کردیم ، ولی یک یا چند متد باید آزاد باشد ، می توان از AllowAnonymous به عنوان یک Attribute استفاده کرد و آنها را استثنا نمود.

خوب برویم مراحل استفاده را در پروژه ببینیم.

در حال حاضر همه امکان Edit یک رکورد را دارند . سعی میکنیم وضعیت دسترسیها را در HomeController سر و سامان دهیم. اگر بخواهم همه متدها نیاز به Authenticate شدن داشته باشد ، به صورت زیر عمل میکنم.

با انجام این تغییرات ، دیگر عمل سیستم را به یک WebApplication تبدیل کردم . قبلن شاید اندکی روی کرد وب سایت داشتیم. هیچ کاربری الان دیگر بدون Loginکردن هیچ کاری نمی تواند انجام دهد ، چرا که کل کلاس را با استفاده از این Attribute نیازمند لاگین کردن نمودیم. برای اینکه حدافل کاربرها بتواند وارد Home Page بشوند و لیست رستورانها را بدون نیاز به Login بودن ببینند ، این متد را به شکل زیر استثنا می کنیم.

پروژه را Save و اجرا کنید . خوب لیست به درستی نمایان است ، ولی اگر یک F12 بزنیم و از Developer Tools وارد قسمت Network شویم ، با کلیک بر روی Details به وضعیتی مشابه زیر خواهید رسید.

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

دانلود سورس پروژه

علی کلاهدوزان
معرفی نویسنده : علی کلاهدوزان

سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .

امتیاز به مطلب
           
نظرات کاربران
  • فرشید علی اکبری
    1395/02/09 - 12:23:42

    1
    0
    سلام مهندس ضمن تشکراز این بخش آموزشی تون باید بگم که این مبحث یکی از شیرین ترین و لزومی ترین مباحث روز دنیای برنامه نویسی وب تا این تاریخ می باشد. امیدوارم این آموزش حداقل به یک جاهایی برسه ومثل انگولار2 نصفه نیمه رها نشه. موفق باشید.
     ----
     پاسخ : چیزی به حال خود ول نشده. ایمیل خود را چک کنید. باید اول Core 1  به عنوان Development Ide تدریس می شد تا بعد بتوان به سراغ AngularJs  رفت . 5 روز دیگر AngularJS آغاز خواهد شد. 
ارسال نظر