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

نام تاپیک: مدیریت دسترسی کاربران به بخش های مختلف برنامه با Identity

  1. #1
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,170

    مدیریت دسترسی کاربران به بخش های مختلف برنامه با Identity

    سلام دوستان


    1. فرض کنید حدود 10 تا صفحه دارم که در تمام 10 صفحه امکاناتی جهت انجام عملیات Add, Delete, Edit, Print, Report و... وجود داره.
    2. در حالت عالی می خوام برای گروهی از کاربران امکان Print را فراهم کنم و برای گروه دیگه خیر. اما نمیخوام که این قابلیت سراسری باشه.
    3. مثلا کاربر A بتونه تو 3 صفحه امکان Print داشته باشه و در مابقی صفحات نداشته باشه.
    4. همچنین امکان این وجود داشته باشه که مدیر برنامه در لحظه سطح دسترسی را تغییر بده.


    سوال:
    1. چطور میشه با Identity و Claim این شرایط را فراهم کرد؟ آیا باید به ازای تمام Controllerها و متدهایی که در برنامه وجود داره برای کاربر یک Claim ایجاد کنم؟
    2. در دوره آموزشی مهندس کرامتی این موضوع در Net Framework با ستفاده از پیاده سازی یک سیستم سفارشی انجام شده بود که برنامه یکبار یک لیست جامع از تمام Controllerها و متدها ایجاد میکرد و مدیر برنامه میتونست به هر کاربر هر متدی را تخصیص بده و تمام Requestهای برنامه با استفاده از ActionFilter بررسی میشدند که ایا متد جاری به کاربر در بانک اطلاعاتی تخصیص داده شده است یا خیر و اگر وجود نداشت پاسخ AccessDenied ارسال میشد. خوبی این روش این بود که در لحظه میشد دسترسی کاربران تغییر داد و نیازی به ویرایش کدهای برنامه به منظور تعیین Roleها نبود و قطعا نیازی هم نبود که برنامه یکبار build بشه و دوباره بارگذاری بشه.
    3. با توجه به موارد بالا چطور میشه با Identity چیزی مشابه مورد بالا را پیاده سازی کرد؟ در واقع بدون ویرایش کدها میخوام در لحظه دسترسی به یک کاربر را اضافه و یا کم کنم.


    تشکر

  2. #2
    کاربر دائمی آواتار fakhravari
    تاریخ عضویت
    دی 1388
    محل زندگی
    بوشهر
    سن
    34
    پست
    8,023

    نقل قول: مدیریت دسترسی کاربران به بخش های مختلف برنامه با Identity

    Claim چون با کوکی هست در زمان لاگین میتونی یک سری تگ ها مثل (صفحه و دکمه و ... با حروف انگلیسی تعریف کنی به صورت ارایه) درون یک کلیم بریزی

    ولی برای چک کردن یک اکشن لازم داری

    using BLL.Interfaces;using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Mvc.Filters;


    namespace WebAdmin.Models
    {
    public class PermissionCheckerAttribute : AuthorizeAttribute, IAuthorizationFilter
    {
    private string _IdRoles = "0";
    private IPersonnel _ip;
    public PermissionCheckerAttribute(string IdRoles)
    {
    _IdRoles = IdRoles;
    }


    public void OnAuthorization(AuthorizationFilterContext context)
    {
    try
    {
    _ip = (IPersonnel)context.HttpContext.RequestServices.Ge tService(typeof(IPersonnel));


    if (context.HttpContext.User.Identity.IsAuthenticated )
    {
    long IdUser = long.Parse(context.HttpContext.User.Identity.Name) ;


    if (_IdRoles != "0" && _ip.UserIsRole(IdUser, _IdRoles) == false)
    {
    context.Result = new RedirectResult("/Account/Login");
    }
    }
    else
    {
    context.Result = new RedirectResult("/Account/Login");
    }
    }
    catch
    {
    context.Result = new RedirectResult("/Account/Login");
    }
    }
    }
    }




    namespace WebAdmin.Controllers{
    [Models.PermissionChecker("4,43")]
    public class AttributeController : Controller
    {

  3. #3
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,170

    نقل قول: مدیریت دسترسی کاربران به بخش های مختلف برنامه با Identity

    ضمن تشکر آنچه که متوجه شدم کدهای بالا برمبنای Role کاربر تنظیم شده. البته اگر درست متوجه شده باشم.

    سوالم این هستش که فرض میکنم که برنامه من دوتا صفحه داره که تمام کاربران با Role = User میتوانند به دکمه Print که یک متد را فراخوانی میکنه دسترسی داشته باشند. حالا فقط یک کاربر است که میخوام در صفحه شماره P1 بتواند Print را اجرا کند ولی در صفحه P2 نتواند دستور Print را اجرا کند اگرچه که دسترسی به هر دو متد برای کاربران Role = User هستش. آنچه که به ذهن من میرسه این هستش که در بانک اطلاعاتی برای هر کاربر دسترسی به متد رو تعریف کنم و در PermissionCheckerAttribute ابتدا بانک اطلاعاتی بررسی شود و در صورت تخصیص دادن متد مورد نظر به کاربر جاری، امکان اجرای دستور وجود داشته باشد.

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

    ممنون اگر راهنمایی کنید.

  4. #4
    کاربر دائمی آواتار fakhravari
    تاریخ عضویت
    دی 1388
    محل زندگی
    بوشهر
    سن
    34
    پست
    8,023

    نقل قول: مدیریت دسترسی کاربران به بخش های مختلف برنامه با Identity

    نقل قول نوشته شده توسط mmbguide مشاهده تاپیک
    ضمن تشکر آنچه که متوجه شدم کدهای بالا برمبنای Role کاربر تنظیم شده. البته اگر درست متوجه شده باشم.

    سوالم این هستش که فرض میکنم که برنامه من دوتا صفحه داره که تمام کاربران با Role = User میتوانند به دکمه Print که یک متد را فراخوانی میکنه دسترسی داشته باشند. حالا فقط یک کاربر است که میخوام در صفحه شماره P1 بتواند Print را اجرا کند ولی در صفحه P2 نتواند دستور Print را اجرا کند اگرچه که دسترسی به هر دو متد برای کاربران Role = User هستش. آنچه که به ذهن من میرسه این هستش که در بانک اطلاعاتی برای هر کاربر دسترسی به متد رو تعریف کنم و در PermissionCheckerAttribute ابتدا بانک اطلاعاتی بررسی شود و در صورت تخصیص دادن متد مورد نظر به کاربر جاری، امکان اجرای دستور وجود داشته باشد.

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

    ممنون اگر راهنمایی کنید.
    میشه دسترسی دیتابیسی کاربر هم چک کرد با تابع بالا

  5. #5
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,170

    نقل قول: مدیریت دسترسی کاربران به بخش های مختلف برنامه با Identity

    تشکر از شما

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

  1. سوال: سفارشی کردن identity 2 با تنظیم دسترسی ها
    نوشته شده توسط ictboy در بخش ASP.NET MVC
    پاسخ: 6
    آخرین پست: سه شنبه 07 مرداد 1399, 09:38 صبح
  2. سوال: دسترسی های داینامیک در Identity
    نوشته شده توسط jaykob در بخش ASP.NET MVC
    پاسخ: 2
    آخرین پست: دوشنبه 17 اردیبهشت 1397, 12:51 عصر
  3. سوال: دسترسی به آخرین رکورد جدول بدون Identity
    نوشته شده توسط msartin در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 4
    آخرین پست: سه شنبه 19 فروردین 1393, 13:06 عصر
  4. عدم دسترسی به User.Identity.IsAuthenticated
    نوشته شده توسط bardia goharbin در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: دوشنبه 25 مهر 1390, 06:17 صبح
  5. دسترسی به مقدارفیلدIdentity
    نوشته شده توسط a3mooneabi22 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 4
    آخرین پست: پنج شنبه 19 شهریور 1388, 13:41 عصر

برچسب های این تاپیک

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

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