PDA

View Full Version : حرفه ای: ایجاد سطح دسترسی حرفه ای برای ویجت های داشبورد مدیریت



سعید کشاورز
پنج شنبه 04 آبان 1396, 12:35 عصر
سلام دوستان..
ویجت هایی که به صورت معمول داخل داشبور وجود دارن رو میخوام سطح دسترسی بدم.
خب یه راهش اینه که داخل View بیام با یه If چک کنم آیا کاربر سطح دسترسی رو داره یا نه.
اما اگه مثلا 100 تا ویجت داشته باشیم باید 100 بار if بذاریم که اصلا جالب نیست.
مناسب ترین راه کار برای این مورد چی میتونه باشه؟

ali_md110
جمعه 05 آبان 1396, 14:46 عصر
این ویجت ها معمولا در MVC از طرف Controller هدایت میشه و برای Action های کنترولر هم معمولا یک ویو میسازیم
چرا شما مجوزهاتون در سطح کنترولر و اکشن چک نمی کنید؟
بوسیله AuthorizeAttribute به راحتی میتونید سطح دسترسی کاربران تون به ویجت یا اکشن مورد نظر مشخص کنید و در دیتابیس ذخیره کنید
جدول Claims مربوط به identityجای خوبی میتونه برای این مجوزها باشه

سعید کشاورز
جمعه 05 آبان 1396, 23:04 عصر
این ویجت ها معمولا در MVC از طرف Controller هدایت میشه و برای Action های کنترولر هم معمولا یک ویو میسازیم
چرا شما مجوزهاتون در سطح کنترولر و اکشن چک نمی کنید؟
بوسیله AuthorizeAttribute به راحتی میتونید سطح دسترسی کاربران تون به ویجت یا اکشن مورد نظر مشخص کنید و در دیتابیس ذخیره کنید
جدول Claims مربوط به identityجای خوبی میتونه برای این مجوزها باشه

ممنون از پاسختون..
نکته ای که هست اینه خیلی چیزها سمت View هستن که واقعا بخوایم برای تک تک اون ها اکشن بذاریم کلی اکشن ایجاد میشه.
مثلا یه آموزش دیدم جالب بود برای ActionLink یه Helper نوشته بود که از کاربر Role هم میگرفت و در صورت داشتن سطح دسترسی اون لینک رو به کاربر نشون میداد..
حالا دقیقا من همچین چیزو رو میخواستم برای نمایش پارشیال و گرفتن سطح دسترسی...اما همش نیام با If چک کنم که شلوغ بشه.
لینک اون آموزش هم اینه
https://vivien-chevallier.com/Articles/create-an-authorized-action-link-extension-for-aspnet-mvc-3

ali_md110
شنبه 06 آبان 1396, 12:02 عصر
در5 MVC من قبلا این چیزی که مد نظر شما هست پیاده کردم و منوی ناوبری هم داینامیک تشکیل میشد
Asp .net core همه چیز رو ساده کرد و یک سری هارد کد ها رو حذف کرد
نمونه پروژه زیر با Asp.net Core مشابه همون چیزی هست که من در mvc 5 انجام دادم
جناب مهندس نصیری زحمتش کشیدند
https://github.com/VahidN/DNTIdentity

Moien Tajik
شنبه 06 آبان 1396, 12:05 عصر
در MVC 5 :


public static class RestrictedPartial
{
public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, string[] roles)
{
var user = HttpContext.Current.User;


if (roles == null || string.IsNullOrEmpty(partialViewName) || !user.Identity.IsAuthenticated) return MvcHtmlString.Empty;


return roles.Any(role => user.IsInRole(role)) ?
MvcHtmlString.Create(htmlHelper.Partial(partialVie wName).ToString()) :
MvcHtmlString.Empty;
}
}



استفاده :

@Html.Partial("RestrictedPartialView", new[] { "admin" })

mohammadmowlavi
دوشنبه 22 آبان 1396, 08:25 صبح
سلام و عرض ادب آیا میشه با hdentity دسترسی به رکوردها در دیتابیس رو هم محدود کرد مثلا یه مدل داریم که مال ذخیره اطلاعات اشخاص در سیستمه بنده میخوام کاربران لیست این اشخاص رو بینن ولی ن همشون رو مثلا بر اساس استان به هرکاربر فقط لیست افراد ساکن در همون استان رو نمایش بدم

Moien Tajik
دوشنبه 22 آبان 1396, 10:47 صبح
سلام و عرض ادب آیا میشه با hdentity دسترسی به رکوردها در دیتابیس رو هم محدود کرد مثلا یه مدل داریم که مال ذخیره اطلاعات اشخاص در سیستمه بنده میخوام کاربران لیست این اشخاص رو بینن ولی ن همشون رو مثلا بر اساس استان به هرکاربر فقط لیست افراد ساکن در همون استان رو نمایش بدم

همچین چیزی رو باید همون موقع وقتی Select میزنید مدیریت کنید ، به این شکل که یک فیلد به جدول کاربران باید اضافه کنید که نام شهر رو نگه داره.
موقع Select کردن شهر کاربر فعلی رو بگیرید و فقط رکوردهای اون شهر رو Select کنید.

mohammadmowlavi
سه شنبه 23 آبان 1396, 17:06 عصر
تشکر از پاسختون اگر بشه یکمی بیشتر توضیح بدین تشکر میکنم و اینکه مثلا ادمین ک باید به تمامی شهرها دسترسی داشته باشه چی؟

Moien Tajik
سه شنبه 23 آبان 1396, 19:53 عصر
تشکر از پاسختون اگر بشه یکمی بیشتر توضیح بدین تشکر میکنم و اینکه مثلا ادمین ک باید به تمامی شهرها دسترسی داشته باشه چی؟
میتونید اول شرط چک کنید اگر Role کاربر فعلی admin بود ، تمام شهر هارو نشونش بده ، در غیر این صورت شهرهای دیگه رو طبق شرطتتون نمایش بده.