سلام استاد.توی بخش دسترسی ها ما به صورت دستی نام هر کنترل و اکشن را وارد میکردیم و به نقش انتساب میدادیم.حالا اگر بخواهیم با اضافه شدن هر کنترلر یا اکشن به طور اتومات نام انها در قسمت دسترسی بیاد باید چکار کنیم؟دنبال چی باید بگردم تا این مطلب و بیاموزم
سلام
اگر اشتباه نکنم به reflector مربوط میشه
راجع بهش تحقیق کنید
استاد راجع به reflector تحقیق کردم.میگه این مربوط به دیباگ کردن میشه.فکر کنم منظور مو خوب نتونستم بگم.ببینید مثلا ما خودمون دستی اومدیم توی جدول permission نام کنترلی که کار اضافه کردن نقش را انجام میداد وارد کردیم و ان را به نقش مدیر دادیم.
اما توی سیستم ها دیدم که وقتی کنترل و اکشنی اضافه میشود به صورت خودکار نام انها در قسمت permission اضافه می شود و کاربر میتونه ان را به نقشی انتساب بده.من دنبال روش این کار هستم
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();
ممنونم استاد.دمتون گرم
استاد حالا که ما لیست کامل کنترل هارو داریم.ایا راهی وجود داره که داخل هر کنترلر permission id را به صورت داینامیک به Authorize بفرستیم و دیگه دستی نریم از تو دیتابیس یخونیم و بنویسیم؟
بله میشه
باید از url دریافت کنید و بقیه عملیات رو انجام بدید