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

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

کاربر سایت

mehdi1359a

عضویت از 1394/02/03

نوشتن فیلتر سفارشی

  • سه شنبه 6 بهمن 1394
  • 09:13
تشکر میکنم

با سلام خدمت دوستان گرامی

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

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);
        }
    }
}

 

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

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

mehdi1359a

عضویت از 1394/02/03

  • سه شنبه 6 بهمن 1394
  • 10:48

اقای مدائنی با تشکر از شما این مطالب رو قبلا مطالعه کرده ام سرچ هم کرده ام و لی هنوز سایتی پیدا نکرده ام که یک مثال بزنن چه جوریه من هنوز متوجه نشده ام که وقتی میخوام به یک اکشن یک نقش رو اصافه یا کم کنم کجا باید کد رو بنویسم به عنوان مثال 

[Authorize(Roles="Admin,PowerUser")]
        public ActionResult Index()
        {
            return View(db.tbl_tests.ToList());
        }

میخوام تو پنل مدیریت سایتم نقش poweruser رو از اکشن index بگیریم و یک نقش دیگه ای به اون اضافه کنم خب این عملیات باید کجا انجام بشه؟ تو قبیتر سفارشی؟چه جوری نقشها از دیتابیس خونده میشه و به اون فیلتر authorize اضافه میشه؟

ممنون از لطفتون اگه یه مثال بزنید خیلی ممنون میشم سایتم درسته فقط تو همین قسمتش گیرم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 6 بهمن 1394
  • 10:49

در این شرایط خودتون باید سیستم Permission رو پیاده سازی کنید

تعیین سطح دسترسی کاربران (بصورت جزئی به اجزا سایت) در MVC

کاربر سایت

mehdi1359a

عضویت از 1394/02/03

  • سه شنبه 6 بهمن 1394
  • 11:25

وقتی مثال اماده خود ویژوال استیودیو رو اجرا می کنیم و migration رو هم فعال میکنیم  جداول aspnetuser,aspnetrole,aspentuserinrole رو میسازه که دقیقا برای همین مجوزهاست درسته؟حالا وقتی به یک اکشن فیلتر 

  [Authorize(Roles="Admin")]

رو اعمال کنیم ودر جدول aspnetrole  و جدول aspnetuserinrole یک کاربر اضافه کنیم و رول admin رو هم به جدول اضافه کنیم اتوماتیم میفهمه که فقظ اجازه ادمین رو به اکشن بده یا باید بازم کد نویسی کنیم ؟من اینکار رو کردم ولی نمیفهمید که کاربر مدیر با نقش به جداول اضافه شده 

ممنون

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 6 بهمن 1394
  • 12:08
کاربرانی که از این پست تشکر کرده اند

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

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

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