سلام. وقت بخیر
بعد از اعمال پرمیشن ها در پروژه ، مشکل دسترسی ها حل شد اما فراموش کردین که منو رو اصلاح کنید مثلا کاربری که دسترسی به مدیریت نقش ها نداره همچنان با ورود به ادمین، در منو گزینه مدیریت نقش ها را میبیند ، که نباید ببیند ممنون میشم راهنمایی کنید که چطور منو را بر اساس دسترسی ها نمایش دهیم.
سلام
از همان متد استفاده کنید
کد دسترسی رو ارسال کنید اگر true برگردوند منو را ایجاد کنید
از if استفاده کنید
چطور از اتریبوت در View استفاده کنم؟ در کنترلر یا در فایل های .cs قابل استفاده است اما در منو که در ویو نوشته شده .cshtml چطور از متد [PermissionChecker(4)] استفاده کنم؟
از متدش استفاده کنید
میتونید یه متد static برای فقط view ها اجاد کنید
ممنون.
راهنمایی خوبی بود. ببینید روشی که استفاده کردم مشکل امنیتی ندارد آیا !!!
یک متد استاتیک بصورت زیر تعریف کردم و Context را بعنوان پارامتر ورودی بهش دادم تا بتونم به سرویس دسترسی پیدا کنم :
public class CheckPermissionForView
{
public static async Task<bool> HavePermission(HttpContext context,int permissionId)
{
IPermissionService _permissionService =
(IPermissionService)context.RequestServices.GetService(typeof(IPermissionService));
if (context.User.Identity.IsAuthenticated)
{
string userName = context.User.Identity.Name;
if (!await _permissionService.CheckPermission(userName, permissionId))
return false;
return true;
}
else
{
return false;
}
}
}
و بصورت زیر هم در View استفاد کردم و Context را به متد ارسال کردم بهمراه permissionId:
@if (await CheckPermissionForView.HavePermission(Context, 13))
خیر مشکلی ندارد
خودمم هم به این روش استفاده میکنم