مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mohammadd

عضویت از 1395/12/08

سفارشی سازی OnAuthorization در ASPCore

  • یکشنبه 9 بهمن 1401
  • 09:08
تشکر میکنم

سلام یه کلاس OnAuthorization دارم میخوام سفارشی سازیش کنم و هر اکشنی صدا زده میشه و اون attribute mypermission بالاسرش بود بره و تو بانک چک کنه دسترسی داره یا نه

Repository دارم به این شکل

و به این شکل استفاده میکنم که تو اون کلاس OnAuthh... رو نمیفهمتش

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

CES

عضویت از 1396/01/14

  • یکشنبه 23 بهمن 1401
  • 21:57

سلام

البته خودمم یک همچین سوال دارم و در آدرس زیر مطرح کردم

https://barnamenevis.org/showthread.php?572990-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86-%D8%A8%D9%87-%D8%A8%D8%AE%D8%B4-%D9%87%D8%A7%DB%8C-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A8%D8%A7-Identity&p=2456438#post2456438

 

قطعا شما باید از اطلاعاتی که context در اختیار شما میذاره استفاده کنید. برای مثال context یک ویژگی با نام ActionDescriptor داره که میتونید نام کامل متدی که فراخوانی شده را بدست بیارید. همچنین از طریق context میتونید به HttpContext و در نتیجه به Session, User و سایر اطلاعات دیگه نیز دسترسی داشته باشید. حالا شما باید سعی کنید که از بانک اطلاعاتی چک کنید که آیا کاربر A به متد WebApp.Controller.HomeController.OnGet دسترسی داره یا خیر. در نام متد من از آدرس کامل استفاده کردم و پیشنهاد میکنم شما هم از آدرس کامل استفاده کنید.

در انتها اگر مقادیر را بررسی کردید و کاربر دسترسی داشت که هیچ، در غیر ایصورت یک response دیگه برگردونید و یا کاربر را به صفحه AccessDenied هدایت کنید.

کاربر سایت

CES

عضویت از 1396/01/14

  • دوشنبه 24 بهمن 1401
  • 15:09

البته باید توجه داشته باشید که در روش پیشهادی در پست قبلی اگر تعداد کاربران شما زیاد باشند و تعداد تراکنش های برنامه هم بالا باشه، برنامه باید دائما بانک اطلاعاتی را بررسی کنه که میتونه راندمان برنامه را پایین بیاره. برای جلوگیری از ارجاعات زیادی به بانک اطلاعاتی میتونید بعد از ورود کاربر به برنامه، یکبار اطلاعات دسترسی کاربر را در بانک اطلاعات درون حافظه (In-Memory) مانند redis بارگذاری کنید و عملیات بررسی سطح دسترسی کاربر را از این محل انجام بدید. هر زمان که دسترسی کاربر توسط مدیر برنامه نیز اصلاح شد، باید اطلاعات redis نیز اصلاح شوند.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)