Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何隔离用户';ASP.net MVC应用程序中的数据?_Asp.net_Azure_Entity Framework 5_Azure Sql Database_Asp.net Mvc 5 - Fatal编程技术网

如何隔离用户';ASP.net MVC应用程序中的数据?

如何隔离用户';ASP.net MVC应用程序中的数据?,asp.net,azure,entity-framework-5,azure-sql-database,asp.net-mvc-5,Asp.net,Azure,Entity Framework 5,Azure Sql Database,Asp.net Mvc 5,所以我在Azure上部署了一个asp.net应用程序(使用MVC5、asp 4.5、EF)。该应用程序允许用户注册和登录。 然而,一旦登录,任何人都可以看到其他人的数据 隔离属于不同用户的数据的最佳做法是什么,以便每个用户只能看到他/她创建的数据 另一个小问题是Facebook如何分离用户数据 感谢对于用户创建的每一条数据,存储其用户ID,并且只允许用户查看具有其用户ID的数据。以下是几个示例: SQL: 将用户id传递给@UserID参数 林克: 其中,currentUserID可以是用户名或

所以我在Azure上部署了一个asp.net应用程序(使用MVC5、asp 4.5、EF)。该应用程序允许用户注册和登录。 然而,一旦登录,任何人都可以看到其他人的数据

隔离属于不同用户的数据的最佳做法是什么,以便每个用户只能看到他/她创建的数据

另一个小问题是Facebook如何分离用户数据


感谢

对于用户创建的每一条数据,存储其用户ID,并且只允许用户查看具有其用户ID的数据。以下是几个示例:

SQL:

将用户id传递给
@UserID
参数

林克:


其中,
currentUserID
可以是用户名或来自表单身份验证的ID,例如:
HttpContext.Current.user.Identity.name

我实现这一点的方法如下所示

在控制器中,您需要使用

 public ActionResult Index()
    {
        var currentUser = manager.FindById(User.Identity.GetUserId());
        return View(db.ToDoes.ToList().Where(todo => todo.User.Id == currentUser.Id));
    }
然后还可以创建一个管理员角色,该角色可以查看用户的所有详细信息,并返回
ToList()
。然后,您可能希望在其上放置一个
[Authorize]
方法,以仅允许管理员访问

    [Authorize(Roles="Admin")]
    public async Task<ActionResult> All()
    {
        return View(await db.ToDoes.ToListAsync());
    }
[Authorize(Roles=“Admin”)]
公共异步任务


希望这能有所帮助

是的,构建多租户应用程序基本上就是这样。实现安全性也是一个好主意,这样他们就不能仅仅通过更改url来查看其他数据。您可能还想看看SQL Azure联合,这使它更具可伸缩性。
 public ActionResult Index()
    {
        var currentUser = manager.FindById(User.Identity.GetUserId());
        return View(db.ToDoes.ToList().Where(todo => todo.User.Id == currentUser.Id));
    }
    [Authorize(Roles="Admin")]
    public async Task<ActionResult> All()
    {
        return View(await db.ToDoes.ToListAsync());
    }