如何隔离用户';ASP.net MVC应用程序中的数据?
所以我在Azure上部署了一个asp.net应用程序(使用MVC5、asp 4.5、EF)。该应用程序允许用户注册和登录。 然而,一旦登录,任何人都可以看到其他人的数据 隔离属于不同用户的数据的最佳做法是什么,以便每个用户只能看到他/她创建的数据 另一个小问题是Facebook如何分离用户数据如何隔离用户';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可以是用户名或
感谢对于用户创建的每一条数据,存储其用户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());
}