نمایش نتایج 1 تا 3 از 3

نام تاپیک: افزودن نقش به کاربری که در حال حاضر لاگین است

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    Iran
    پست
    1,338

    افزودن نقش به کاربری که در حال حاضر لاگین است

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

    ولی مشکلی که وجود داره اینه که تا وقتی که این کاربر logout و login مجدد انجام نده
    [Authorize(Roles = "VIP")]

    کار نمی کنه


    راهی که سریعا به ذهن می رسه اینه که خودمون در کد، کاربر رو signout و singin مجدد کنیم

    ولی چطور بدون دسترسی به پسورد کاربر میشه فقط با استفاده از نام کاربری، خودمون کاربر رو لاگین کنیم؟
    (با فرض استفاده از asp.net mvc5 و Identity 2.0


    ممنون

  2. #2

    نقل قول: افزودن نقش به کاربری که در حال حاضر لاگین است

    از اونجایی که اطلاعات Identity کاربر در کوکی مرورگر کش میشه باید کاربر رو خارج کنید تا دوباره بروز رسانی بشه. کلا وجود login بلند مدت از نظر امنیتی مناسب نیست.

  3. #3

    نقل قول: افزودن نقش به کاربری که در حال حاضر لاگین است

    بطور پیشفرض Authorize از User.IsInRole استفاده میکنه و User هم از کوکی ها استفاده میکنه.
    وقتی لاگین میکنید براتون Authentication Ticket ایجاد میشه و اطلاعات کاربر هم داخل Cookie ذخیره میشه.
    وقتی به کاربری Role جدیدی اضافه میکنید ، Role در دیتابیس به اون کاربر اضافه میشه و Cookie تغییری نمیکنه.
    چون Authorize Filter از Cookie استفاده میکنه ، متوجه نمیشه که Role جدید اضافه شده ; تا وقتی که لاگین کنید و Role های جدید از دیتابیس خونده بشه.

    اگر از ASP.NET Core استفاده میکنید ، با استفاده از این دستور میتونید بطور دستی کاری کنید که Cookie ها همراه با Role های جدید ایجاد بشن :

    UserManager.UpdateSecurityStampAsync(user)


    در ASP.NET MVC 5 این دستور وجود نداره و شما 2 راه برای حل این مشکل دارید :
    1- بجای User.IsInRole از UserManager.IsInRole استفاده کنید چون UserManager از دیتابیس میخونه -> پس میتونید فیلتر Authorize سفارشی خودتون که از UserManager استفاده میکنه رو بنویسید :
    https://stackoverflow.com/a/26943389/6661314

    2- زمان ValidateInterval رو برای Cookie رو کاهش بدید که بعد از مدت کوتاهی Invalid بشه و دوباره با مقادیر جدید از دیتابیس ایجاد بشن :
    https://stackoverflow.com/a/36782720/6661314

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: چهارشنبه 13 اسفند 1393, 22:48 عصر
  2. پاسخ: 0
    آخرین پست: پنج شنبه 25 آبان 1391, 11:26 صبح
  3. مشاهده هر چیزی که در حال پرینت گرفتن است
    نوشته شده توسط tecnicco در بخش ابزارهای گزارش سازی در دلفی
    پاسخ: 10
    آخرین پست: پنج شنبه 18 فروردین 1390, 14:24 عصر
  4. پاسخ: 3
    آخرین پست: جمعه 15 بهمن 1389, 21:57 عصر
  5. پاسخ: 7
    آخرین پست: جمعه 05 تیر 1388, 13:00 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •