r4hgozar
سه شنبه 24 تیر 1393, 15:04 عصر
سلام دوستان و اساتید.
من می خوام بدونم چطوری باید سطح دسترسی برای کاربران رو تایین کنم.
من یک صفحه ساختم بصورت زیر
البته در area
2 تا کنترل دارم و 3 تا model که کدهاش رو پایین می زارم
public class AdminPostsController : Controller
{
private DataBaseContext db = new DataBaseContext();
// GET: /Admin/AdminPosts/
public ActionResult Index()
{
return View(db.Posts.ToList());
}
// GET: /Admin/AdminPosts/Details/5
public ActionResult Details(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Post post = db.Posts.Find(id);
if (post == null)
{
return HttpNotFound();
}
return View(post);
}
// GET: /Admin/AdminPosts/Create
public ActionResult Create()
{
return View();
}
// POST: /Admin/AdminPosts/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="ID,Title,Description")] Post post)
{
if (ModelState.IsValid)
{
post.ID = Guid.NewGuid();
db.Posts.Add(post);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(post);
}
// GET: /Admin/AdminPosts/Edit/5
public ActionResult Edit(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Post post = db.Posts.Find(id);
if (post == null)
{
return HttpNotFound();
}
return View(post);
}
// POST: /Admin/AdminPosts/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="ID,Title,Description")] Post post)
{
if (ModelState.IsValid)
{
db.Entry(post).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(post);
}
// GET: /Admin/AdminPosts/Delete/5
public ActionResult Delete(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Post post = db.Posts.Find(id);
if (post == null)
{
return HttpNotFound();
}
return View(post);
}
// POST: /Admin/AdminPosts/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(Guid id)
{
Post post = db.Posts.Find(id);
db.Posts.Remove(post);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
این کنترل مربوط به پست گذاشتن توسط ادمین بود.
و این که پایین هست مربوط به ثبت نام یوزر ها
public class LoginController : Controller
{
private DataBaseContext db = new DataBaseContext();
// GET: /Admin/Login/
public ActionResult Index()
{
return View(db.Userses.ToList());
}
// GET: /Admin/Login/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Users users = db.Userses.Find(id);
if (users == null)
{
return HttpNotFound();
}
return View(users);
}
// GET: /Admin/Login/Create
public ActionResult Create()
{
return View();
}
// POST: /Admin/Login/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="ID,Name,LastName,NickName")] Users users)
{
if (ModelState.IsValid)
{
db.Userses.Add(users);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(users);
}
// GET: /Admin/Login/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Users users = db.Userses.Find(id);
if (users == null)
{
return HttpNotFound();
}
return View(users);
}
// POST: /Admin/Login/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="ID,Name,LastName,NickName")] Users users)
{
if (ModelState.IsValid)
{
db.Entry(users).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(users);
}
// GET: /Admin/Login/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Users users = db.Userses.Find(id);
if (users == null)
{
return HttpNotFound();
}
return View(users);
}
// POST: /Admin/Login/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Users users = db.Userses.Find(id);
db.Userses.Remove(users);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
و این هم مدل هام که بر اساس اونها کنترل و ویو رو ساختم
public class Users
{
public Users()
{
}
public int ID { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public string NickName { get; set; }
}
public class Post
{
public Post()
{
ID = new Guid();;
}
[Key]
[Required]
public System.Guid ID { get; set; }
[MaxLength(100)]
[Required]
public string Title { get; set; }
public String Description { get; set; }
}
public class DataBaseContext : DbContext
{
public DataBaseContext()
{
}
static DataBaseContext()
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DataBaseContext>());
}
public DbSet<Post> Posts { get; set; }
public DbSet<Users> Userses { get; set; }
}
من نمی دونم اصلا در مرحله بعد چطوری باید از autorize ها استفاده کنم.
خواها اگه کسی مثال خیلی ساده داره ویا می تونه همینجا بگه مرحله بعد باید چی کار کنم ممنون میشم.
خیلی گشتم و خوندم اما مطالب ساده نیستن و خیلی سنگین و بدون ترتیب مطرح میشن.
ممنون از همه
من می خوام بدونم چطوری باید سطح دسترسی برای کاربران رو تایین کنم.
من یک صفحه ساختم بصورت زیر
البته در area
2 تا کنترل دارم و 3 تا model که کدهاش رو پایین می زارم
public class AdminPostsController : Controller
{
private DataBaseContext db = new DataBaseContext();
// GET: /Admin/AdminPosts/
public ActionResult Index()
{
return View(db.Posts.ToList());
}
// GET: /Admin/AdminPosts/Details/5
public ActionResult Details(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Post post = db.Posts.Find(id);
if (post == null)
{
return HttpNotFound();
}
return View(post);
}
// GET: /Admin/AdminPosts/Create
public ActionResult Create()
{
return View();
}
// POST: /Admin/AdminPosts/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="ID,Title,Description")] Post post)
{
if (ModelState.IsValid)
{
post.ID = Guid.NewGuid();
db.Posts.Add(post);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(post);
}
// GET: /Admin/AdminPosts/Edit/5
public ActionResult Edit(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Post post = db.Posts.Find(id);
if (post == null)
{
return HttpNotFound();
}
return View(post);
}
// POST: /Admin/AdminPosts/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="ID,Title,Description")] Post post)
{
if (ModelState.IsValid)
{
db.Entry(post).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(post);
}
// GET: /Admin/AdminPosts/Delete/5
public ActionResult Delete(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Post post = db.Posts.Find(id);
if (post == null)
{
return HttpNotFound();
}
return View(post);
}
// POST: /Admin/AdminPosts/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(Guid id)
{
Post post = db.Posts.Find(id);
db.Posts.Remove(post);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
این کنترل مربوط به پست گذاشتن توسط ادمین بود.
و این که پایین هست مربوط به ثبت نام یوزر ها
public class LoginController : Controller
{
private DataBaseContext db = new DataBaseContext();
// GET: /Admin/Login/
public ActionResult Index()
{
return View(db.Userses.ToList());
}
// GET: /Admin/Login/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Users users = db.Userses.Find(id);
if (users == null)
{
return HttpNotFound();
}
return View(users);
}
// GET: /Admin/Login/Create
public ActionResult Create()
{
return View();
}
// POST: /Admin/Login/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="ID,Name,LastName,NickName")] Users users)
{
if (ModelState.IsValid)
{
db.Userses.Add(users);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(users);
}
// GET: /Admin/Login/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Users users = db.Userses.Find(id);
if (users == null)
{
return HttpNotFound();
}
return View(users);
}
// POST: /Admin/Login/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="ID,Name,LastName,NickName")] Users users)
{
if (ModelState.IsValid)
{
db.Entry(users).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(users);
}
// GET: /Admin/Login/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Users users = db.Userses.Find(id);
if (users == null)
{
return HttpNotFound();
}
return View(users);
}
// POST: /Admin/Login/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Users users = db.Userses.Find(id);
db.Userses.Remove(users);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
و این هم مدل هام که بر اساس اونها کنترل و ویو رو ساختم
public class Users
{
public Users()
{
}
public int ID { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public string NickName { get; set; }
}
public class Post
{
public Post()
{
ID = new Guid();;
}
[Key]
[Required]
public System.Guid ID { get; set; }
[MaxLength(100)]
[Required]
public string Title { get; set; }
public String Description { get; set; }
}
public class DataBaseContext : DbContext
{
public DataBaseContext()
{
}
static DataBaseContext()
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DataBaseContext>());
}
public DbSet<Post> Posts { get; set; }
public DbSet<Users> Userses { get; set; }
}
من نمی دونم اصلا در مرحله بعد چطوری باید از autorize ها استفاده کنم.
خواها اگه کسی مثال خیلی ساده داره ویا می تونه همینجا بگه مرحله بعد باید چی کار کنم ممنون میشم.
خیلی گشتم و خوندم اما مطالب ساده نیستن و خیلی سنگین و بدون ترتیب مطرح میشن.
ممنون از همه