• 1399/04/25

دسترسی پویا :

سلام استاد.توی بخش دسترسی ها ما به صورت دستی نام هر کنترل و اکشن را وارد میکردیم و به نقش انتساب میدادیم.حالا اگر بخواهیم با اضافه شدن هر کنترلر یا اکشن به طور اتومات نام انها در قسمت دسترسی بیاد باید چکار کنیم؟دنبال چی باید بگردم تا این مطلب و بیاموزم

  • 1399/04/25
  • ساعت 21:42

سلام

اگر اشتباه نکنم به reflector مربوط میشه 

راجع بهش تحقیق کنید


  • 1399/04/25
  • ساعت 22:04

استاد راجع به reflector تحقیق کردم.میگه این مربوط به دیباگ کردن میشه.فکر کنم منظور مو خوب نتونستم بگم.ببینید مثلا ما خودمون دستی اومدیم توی جدول permission نام کنترلی که کار اضافه کردن نقش را انجام میداد وارد کردیم و ان را به نقش مدیر دادیم.

اما توی سیستم ها دیدم که وقتی کنترل و اکشنی اضافه میشود به صورت خودکار نام انها در قسمت permission اضافه می شود و کاربر میتونه ان را به نقشی انتساب بده.من دنبال روش این کار هستم


  • 1399/04/25
  • ساعت 22:06

https://stackoverflow.com/questions/21583278/getting-all-controllers-and-actions-names-in-c-sharp

 

Assembly asm = Assembly.GetAssembly(typeof(MyWebDll.MvcApplication));

var controlleractionlist = asm.GetTypes()
        .Where(type=> typeof(System.Web.Mvc.Controller).IsAssignableFrom(type))
        .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public))
        .Where(m => !m.GetCustomAttributes(typeof( System.Runtime.CompilerServices.CompilerGeneratedAttribute), true).Any())
        .Select(x => new {Controller = x.DeclaringType.Name, Action = x.Name, ReturnType = x.ReturnType.Name, Attributes = String.Join(",", x.GetCustomAttributes().Select(a => a.GetType().Name.Replace("Attribute",""))) })
        .OrderBy(x=>x.Controller).ThenBy(x => x.Action).ToList();

  • 1399/04/25
  • ساعت 22:16

ممنونم استاد.دمتون گرم


  • 1399/04/25
  • ساعت 23:36

استاد حالا که ما لیست کامل کنترل هارو داریم.ایا راهی وجود داره که داخل هر کنترلر permission id را به صورت داینامیک به Authorize بفرستیم و دیگه دستی نریم از تو دیتابیس یخونیم و بنویسیم؟


  • 1399/04/26
  • ساعت 09:12

بله میشه 

باید از url دریافت کنید و بقیه عملیات رو انجام بدید


logo-samandehi