تعیین سطح دسترسی به کلیدهای یک صفحه در mvc
سلام
می خواهم برنامه ای طراحی کنم که کاربران به با توجه به سطح دسترسی که دارند به کلیدهای ثبت و ویرایش و حذف دسترسی داشته باشند
مثلا کاربر a به کلید ثبت - کاربر b به کلید ویرایش - کاربر c به کلید حذف - کاربر dبه کلید ثبت و ویرایش
لطفا راهنمای بفرمایید درسمت mvc چگونه باید این کار را انجام بدهم
درضمن از روش identity خود mvc هم استفاده نمی خواهم بکنم
اگر نمونه ای هم می توانید معرفی کنید
باتشکر
4 پاسخ
سلام
مهندس احساني نمونه کدی دارید
باتشکر
سلام دوست عزيز
يك روش همون استفاده از Identity 2.0 هست كه خودت هم بهش اشاره كردي . ولي روش سفارشي كه بتوني اين كار رو انجام بدي استفاده از Filter هاي سفارشي هست .
براي اين كار لازمه شما يه كلاس تعريف بكني و كلاس AuthorizeAttribute ارث بري كني . و بعد از اين فيلتر، تو controller و بالاي هر Action اي استفاده كني .
موفق باشي.
سلام
به نظر من اختراع مجدد چرخ کار درستی نیست و بخواهید یا نه بایستی از کلاس های identity استفاده کنید. اما فکر می کنم اون سطحی از سفارشی سازی که مد نظر شماست رو می تونید از این مجموعه مقاله پیدا کنید.
در واقع شما حداقل یک جدول کاربران ایجاد می کنید و بعد از لاگ این شدن کاربر و ثبت اطلاعات اون در یک شی مثل کوکی هر بار نیاز داشتید دسترسی رو بررسی کنید با استفاده از صفت [Authorize] روی هر کنترل می توانید اول لاگ این بودن رو بررسی کنید و بعد با استفاده از شرطی مثل زیر کاربر خاص بودن و بررسی کنید. البته در نهایت توصیه می کنم simple member ship استفاده نکنید و مدیریت نقش ها رو هم به پروژه تون اضافه کنید.
if (User.Identity.name=="ali") { //do some .... }else { }
سلام دوست عزيز
1- يك كلاس جديد ايجاد كنيد و كد زير را در آن Past كنيد .
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using DAL; namespace test { public class CustomAuthorizeAttribute : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { if (httpContext == null) throw new ArgumentNullException("httpContext"); var user = new UsersContext().GetUser(httpContext.User.Identity.Name); if (!httpContext.User.Identity.IsAuthenticated) return false; // بررسي دسترسي كاربر // اگر بلي => return true // اگر خير => return false; } protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { if (filterContext.HttpContext.Request.IsAuthenticated) { filterContext.Result = new HttpStatusCodeResult(403); return; } base.HandleUnauthorizedRequest(filterContext); } } }
2- از اين فيلتر با در كنترلر ها استفاده كنيد !.
موفق باشيد .