با سلام خدمت دوستان گرامی
چطور باید نقشها رو از جدول بخونم و به فیلتر سفارشی که می سازیم اضافه کنیم که با اضافه یا حذف یک کاربر از یک نقش دسترسی داده یا گرفته شود از او ؟ لطفا دقیقا مطرح شود کجای کد سفارشی باید نقشها رو بخونیم. ممنون از همه دوستان
namespace graph1.Controllers { [CustomFilter] public class CountactUsController : Controller { private OnlineTestDBEntities db = new OnlineTestDBEntities(); // GET: /CountactUs/ public ActionResult Index() { return View(db.tbl_user_views.ToList()); } // GET: /CountactUs/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } tbl_user_views tbl_user_views = db.tbl_user_views.Find(id); if (tbl_user_views == null) { return HttpNotFound(); } return View(tbl_user_views); } // GET: /CountactUs/Create public ActionResult Create() { return View(); } // POST: /CountactUs/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include="view_ID,view_text,view_useremail")] tbl_user_views tbl_user_views) { if (ModelState.IsValid) { db.tbl_user_views.Add(tbl_user_views); db.SaveChanges(); return RedirectToAction("Index"); } return View(tbl_user_views); } // GET: /CountactUs/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } tbl_user_views tbl_user_views = db.tbl_user_views.Find(id); if (tbl_user_views == null) { return HttpNotFound(); } return View(tbl_user_views); } // POST: /CountactUs/Edit/5 // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include="view_ID,view_text,view_useremail")] tbl_user_views tbl_user_views) { if (ModelState.IsValid) { db.Entry(tbl_user_views).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(tbl_user_views); } // GET: /CountactUs/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } tbl_user_views tbl_user_views = db.tbl_user_views.Find(id); if (tbl_user_views == null) { return HttpNotFound(); } return View(tbl_user_views); } // POST: /CountactUs/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { tbl_user_views tbl_user_views = db.tbl_user_views.Find(id); db.tbl_user_views.Remove(tbl_user_views); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }
اقای مدائنی با تشکر از شما این مطالب رو قبلا مطالعه کرده ام سرچ هم کرده ام و لی هنوز سایتی پیدا نکرده ام که یک مثال بزنن چه جوریه من هنوز متوجه نشده ام که وقتی میخوام به یک اکشن یک نقش رو اصافه یا کم کنم کجا باید کد رو بنویسم به عنوان مثال
[Authorize(Roles="Admin,PowerUser")] public ActionResult Index() { return View(db.tbl_tests.ToList()); }
میخوام تو پنل مدیریت سایتم نقش poweruser رو از اکشن index بگیریم و یک نقش دیگه ای به اون اضافه کنم خب این عملیات باید کجا انجام بشه؟ تو قبیتر سفارشی؟چه جوری نقشها از دیتابیس خونده میشه و به اون فیلتر authorize اضافه میشه؟
ممنون از لطفتون اگه یه مثال بزنید خیلی ممنون میشم سایتم درسته فقط تو همین قسمتش گیرم
در این شرایط خودتون باید سیستم Permission رو پیاده سازی کنید
وقتی مثال اماده خود ویژوال استیودیو رو اجرا می کنیم و migration رو هم فعال میکنیم جداول aspnetuser,aspnetrole,aspentuserinrole رو میسازه که دقیقا برای همین مجوزهاست درسته؟حالا وقتی به یک اکشن فیلتر
[Authorize(Roles="Admin")]
رو اعمال کنیم ودر جدول aspnetrole و جدول aspnetuserinrole یک کاربر اضافه کنیم و رول admin رو هم به جدول اضافه کنیم اتوماتیم میفهمه که فقظ اجازه ادمین رو به اکشن بده یا باید بازم کد نویسی کنیم ؟من اینکار رو کردم ولی نمیفهمید که کاربر مدیر با نقش به جداول اضافه شده
ممنون
باید RoleManager را فعال کنید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)