ورود

View Full Version : سوال: مزایای identity



mona11
چهارشنبه 02 دی 1394, 12:17 عصر
مزایای استفاده از identity مایکروسافت چیست؟
چرا وقتی من میتونم با چند تا دستور ساده عملیات لاگین و ساین اوت رو انجام بدم؟بیام از این دنیای بزرگ استفاده کنم؟

مگر نمیشه با ایجاد یک اکشن فیلتر سفارشی عملیات Athurize رو انجام داد؟

اگر لطف کنید چند تا مزیت استفاده از Identity مایکروسافت رو بفرمایید ممنون میشم.

mbasirati
چهارشنبه 02 دی 1394, 14:32 عصر
به خاطر داشتن امکانات زیاد و البته پیشرفته و حرفه ای
اول اینکه تمامی بخش های مربوط به سیستم اعتبارسنجی و سطح دسترسی رو داخل خودش داره و فقط شما باید نسبت به نیاز خودتون تغییرات جزئی بدید. این بخش ها شامل مواردی مث فرم ثبت نام، ورود، فراموشی رمز عبور، تغییر رمز عبور، ارسال ایمیل فعال سازی، اعتبارسنجی دومرحله ای با استفاده از ایمیل یا پیامک، ثبت نام و ورود با استفاده از اکانت های شبکه های اجتماعی (اکسترنال لاگین)، آماده بودن جدول های مورد نیاز (جدول کاربر، رل ها و...) و کلی امکانات دیگس.

برای مثال خودش رمز عبور رو هش میکنه و الگوریتمش هم خیلی قویه. میتونید میزان قوی بودن رمز عبوری که کاربر مشخص میکنه رو تنظیم کنید. مثلا اینکه کاربر مجبور باشه رمز عبورش حداقل شامل n کاراکتر باشه، شامل حروف و اعداد باشه یا نه، شامل کاراکترهای خاص باشه یا نه و کلی امکانات دیگه.

و البته اینا در حد دانش ناچیز من بود.

hakim22
چهارشنبه 02 دی 1394, 16:58 عصر
به طور کلی برنامه نویسی امنیت کار متخصص در این زمینه است. روشهای زیادی برای هک کردن سیستم های تشخیص هویت وجود دارد.
در Identity بسیاری از روشهای معمول نفوذ بسته شده و برای بسیاری دیگر راهکار مناسب ارائه شده. و هم اینکه شما میتوانید از قسمت که راضی نیستید خودتان تغییر دهید.
یک اکشن فیلتر و سشن و کوکی تنها چیزی نیست که Identity دارد.

mona11
چهارشنبه 02 دی 1394, 22:09 عصر
به خاطر داشتن امکانات زیاد و البته پیشرفته و حرفه ای
اول اینکه تمامی بخش های مربوط به سیستم اعتبارسنجی و سطح دسترسی رو داخل خودش داره و فقط شما باید نسبت به نیاز خودتون تغییرات جزئی بدید. این بخش ها شامل مواردی مث فرم ثبت نام، ورود، فراموشی رمز عبور، تغییر رمز عبور، ارسال ایمیل فعال سازی، اعتبارسنجی دومرحله ای با استفاده از ایمیل یا پیامک، ثبت نام و ورود با استفاده از اکانت های شبکه های اجتماعی (اکسترنال لاگین)، آماده بودن جدول های مورد نیاز (جدول کاربر، رل ها و...) و کلی امکانات دیگس.

برای مثال خودش رمز عبور رو هش میکنه و الگوریتمش هم خیلی قویه. میتونید میزان قوی بودن رمز عبوری که کاربر مشخص میکنه رو تنظیم کنید. مثلا اینکه کاربر مجبور باشه رمز عبورش حداقل شامل n کاراکتر باشه، شامل حروف و اعداد باشه یا نه، شامل کاراکترهای خاص باشه یا نه و کلی امکانات دیگه.

و البته اینا در حد دانش ناچیز من بود.

بسیار عالی دوست عزیز...
ولی تمام این ها که گفتین کار چند ساعت برنامه نویسی هست.
الگوریتم هش که یه تابعه که با md5 هش میکنه...
چند حرفی وارد کردن پسورد هم که یه attribute هست که روی مدل برنامه تعریف میشه...
در قضیه اکسترنال لاگین من اطلاعی ندارم و نمیدونم چقدر زمان میبره؟(در این مورد موافقم باهاتون)

ولی آیا بهتر نیست که من حداقل سیستمی رو که خودم پیاده سازی میکنم رو بشناسم؟

مثلا بنده برای ایجاد یک جدول جدید در این سیستم identity چند روزه دارم مطالعه میکنم هنوز نفهمیدم چی به چیه؟
تعداد کانتکس ها 2 تا میشه و باز خطاهای بعدی پیش میاد و کلی درد سر دیگه...
خودمم گیج شدم

mona11
چهارشنبه 02 دی 1394, 22:26 عصر
اینجا (http://www.dotnettips.info/post/1770/asp-net-mvc-%D9%88-identity-2-0-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D9%BE%D8%A7%DB%8C%D9%87)رو نگاه کنید...
برق از کلم پریده ...خیلی سخت نیست درکش؟

mbasirati
چهارشنبه 02 دی 1394, 22:43 عصر
خب این سیستم یه کمی پیچیده هست ولی پیچیدگیش به خاطر امکانات زیادشه.

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

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

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

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

hakim22
پنج شنبه 03 دی 1394, 10:52 صبح
اینجا (http://www.dotnettips.info/post/1770/asp-net-mvc-%D9%88-identity-2-0-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D9%BE%D8%A7%DB%8C%D9%87)رو نگاه کنید...
برق از کلم پریده ...خیلی سخت نیست درکش؟

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

شما هم میتوانید با دو DbContext کار کنید و هم میتوانید فقط از IdentityDbContext استفاده کنید.
کلاس IdentityDbContext از کلاس DbContext ارث بری کرده است پس همه کارکرد های آن را دارست به اضافه ی کدهای مربوط به مدیریت کاربرها و امنیت.

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

نیازی به تغییر نام جداول Identity ندارید. چه عیبی در نام AspNetUser هست !؟
در CodeFirst شما با جداول داخل دیتابیس کاری ندارید. فقط Model ها را می بیند. مدل مربوط به User هم ApplicationUser است. البته می توانید نام این کلاس را هم تغییر دهید.

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

گاهی می بینم که بعضی از دوستان سعی می کنند که آی دی جداول مربوط به کاربرها را از string به int تغییر دهند.
روشهای زیادی برای اینکار وجود دارد. اما آیا واقعا نیازی به این کارها هست ؟

mona11
جمعه 04 دی 1394, 21:44 عصر
آقای بصیرتی و حکیم ممنون از توضیحاتتون...