处理多用户安全性,所有权

时间:2012-12-17 20:37:51

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-membership

我计划开发一个带有Entity Framewok 的 asp.net mvc 4(和simplemembership)网站,该网站将处理多个用户。用户具有可以发布或编辑的页面,如Facebook个人资料页面。而我希望其他用户也可以在此页面上查看和发布,但不会再次编辑这些帖子,比如facebook。

我现在正在寻找一些关于如何做的信息,但我什么都没发现。我是asp.net的新手,我不知道所有的手段。角色似乎没有处理这种行为。有没有办法做一些事情,比如,在我的控制器中,我可以做一些事情,比如当我创建帖子时,我说登录的用户是所有者,只是他可以删除这个帖子,但所有其他人都可以看到它。但是,我仍然不知道如何为每个用户提供他的个人资料页面。

我接受所有建议,链接到tuto或文章,反思,想法...... (对不起,我的英语不好) 谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用simplemembership查找当前登录的用户,如下所示:

User.Identity.Name

要获取当前用户,您可以查询您的存储库,例如:

var currentUser = db.UserProfiles.Where(u => u.UserName.Equals(User.Identity.Name)).Single();

EDIT2:错过了将我的模型中的字段更改为您的字段,已修复

根据您的评论,我将尝试使用MVC4中的标准Scaffolded CRUD删除方法编写一个小示例,并假设Post模型具有UserId属性/字段:

 [HttpPost, ActionName("Delete")]
 public ActionResult DeleteConfirmed(int id) 
 {
     var currentUser = db.UserProfiles.Where(u => u.UserName.Equals(User.Identity.Name)).Single();
     Post post = db.Posts.Find(id);      
     if (post.UserId==currentUser.UserId)
     {
        {
          db.Posts.Remove(post);
          db.SaveChanges();
          return RedirectToAction("Index");
        }  
     }    
  }