首页 \ 问答 \ 如何在ASP.net MVC应用程序中隔离用户的数据?(How can I isolate users' data in ASP.net MVC application?)

如何在ASP.net MVC应用程序中隔离用户的数据?(How can I isolate users' data in ASP.net MVC application?)

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

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

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

谢谢


So I have an asp.net application (using MVC5, ASP 4.5, EF) deployed on Azure. The application allows users to register and login. However, once logged in, anyone can see everyone else's data.

What is the best practice to isolate the data belonging to different users so that each user can only see the data he/she creates?

Another small question is how does Facebook separates its users' data?

Thanks


原文:https://stackoverflow.com/questions/20340489
更新时间:2019-07-12 07:09

最满意答案

对于用户创建的每条数据,存储其用户ID并仅允许用户查看具有其用户ID的数据。 几个例子:

SQL:

SELECT UserDataID, Value FROM UserData WHERE UserID = @UserID;

将用户的id传递给@UserID参数。

LINQ:

using (var entityFrameworkContext = new MyDataEntities())
{
    var currentUserData = entityFrameworkContext.UserData.Where(userData -> userData.UserID = currentUserID);
}

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


For every piece of data a user creates, store their user ID and only allow users to see data that has their user ID. A couple of examples:

SQL:

SELECT UserDataID, Value FROM UserData WHERE UserID = @UserID;

Pass in the user's id to the @UserID parameter.

LINQ:

using (var entityFrameworkContext = new MyDataEntities())
{
    var currentUserData = entityFrameworkContext.UserData.Where(userData -> userData.UserID = currentUserID);
}

Where currentUserID could be the user name or ID from forms authentication, for example: HttpContext.Current.User.Identity.Name.

2013-12-03

相关问答

更多

如何在ASP.NET MVC3中创建图表?(How do I create graphs in ASP.NET MVC3? [closed])

你有几个选择: 1.创建您自己的图表控件 从头开始或基于MVC 3的ChartHelper web助手构建自己的图表。 2.使用“现成的”组件 Telerik为ASP.NET MVC提供了一系列控件,包括图表。 看看他们的演示 ,看看它是否符合你的需求。 You have a couple of options: 1. Create your own charting control Start from scratch or build upon MVC 3's ChartHelper web ...

ASP.NET应用程序上的在线用户(Online Users on ASP.NET Application)

与您的代码愉快地正交的另一个不错的解决方案是Google Analytics。 http://www.google.com/analytics/使用GA,您可以在网站上看到活跃用户的实时显示。 这也有助于你有一段时间的历史,并可以看到用户活动的高峰和低谷。 Another nice solution that is pleasantly orthogonal to your code is Google Analytics. http://www.google.com/analytics/ Usi ...

ASP.NET MVC中的角色缓存策略(Role Caching Strategies in ASP.NET MVC)

如果您开发了自己的自定义RoleProvider类,则可以执行自己的数据缓存,例如使用ASP.NET缓存。 这比使用Session作为缓存更灵活,因为即使在没有启用会话状态的页面上它也可以工作。 我不同意Wyatt Barnett的评论: 使用会话的缺点......会话存储非常违规且不可靠的事实 缓存(无论是Session,ASP.NET Cache还是其他类型)都是不稳定的 - 您只需在需要时重新填充即可。 回答你的问题: 它与用于加密cookie的加密一样安全。 如果您依赖FormsAuthe ...

ASP.NET MVC示例MS应用程序?(Sample MS application for ASP.NET MVC?)

NerdDinner是开创性的ASP.NET MVC示例。 一旦你了解了这些,继续阅读Orchard CMS ,了解一个完全松散耦合的,基于IOC的ASP.NET MVC应用程序的一个惊人的例子。 NerdDinner is the seminal ASP.NET MVC example. Once you've grokked that, move on to Orchard CMS for an amazing example of a totally loosely-coupled, IOC ...

asp.net c#MVC:如何在没有ViewState的情况下生活?(asp.net c# MVC: How do I live without ViewState?)

但当然可以。 其实网路是无国籍的。 事实上,任何相反的想法都是像差。 Web控件在MVC中消失。 服务器端没有触发事件。 这被两个不同的机制替代 - URL和POST表单数据。 正确使用这些将取代您对ViewState的需求。 在传统的ASP.NET Web应用程序中,您将在您的网页上放置一个将执行功能X的LinkButton。ASP.NET会将许多ViewState cruft,javascript和其他内容粘贴到网页中,以便用户点击按钮时和“返回”到网站(通过提交没有人知道的表单),ASP.N ...

ASP.NET MVC 1转发与ASP.NET MVC 2兼容吗?(Is ASP.NET MVC 1 forwards compatible with ASP.NET MVC 2?)

一直在发生突变 。 如果你想要一个1.0项目在2.0上运行,它确实在不同的地方寻找东西; 所以你必须将应用程序迁移到2.0。 。 以下是可能“中断”的变化(当前为预览版2): 预览2中的更改 Helpers现在返回一个MvcHtmlString对象 为了利用ASP.NET 4中新的HTML编码表达式语法,HTML助手的返回类型现在是MvcHtmlString而不是string 。 请注意,如果您将ASP.NET MVC 2和新的助手用于ASP.NET 3.5,那么您将无法利用HTML编码语法; 新 ...

你可以在Web Forms应用程序和Asp.NET Core MVC应用程序之间共享SQL Server会话吗?(Can you share a SQL Server session between a Web Forms app and a Asp.NET Core MVC app?)

不可以。在ASP.NET应用程序和ASP.NET Core应用程序之间共享会话状态是不可能的。 这是因为两个主要原因: ASP.NET和ASP.NET Core会以不同方式处理会话存储。 在ASP.NET中,您拥有会话提供程序,而在ASP.NET Core中,它使用IDistributedCache作为会话状态。 虽然你可以使用类似SQL Server的东西,但实际存储状态的机制在每种情况下都不相同,因此无法读取其他人正在做的事情。 会话数据被加密,ASP.NET中的加密机制与ASP.NET Co ...

以Web服务为模型的ASP.Net MVC?(ASP.Net MVC with web service as model?)

编辑2010-11-27; 澄清了我的想法,这真的很有必要。 Web服务通常在不同类型的应用程序中公开功能,而不是在单个应用程序中进行抽象。 您可能更多地考虑封装命令和读取方式,而不会影响控制器/视图编程。 如果您在解耦之后使用服务总线中的服务,并在异步页面中执行异步模式,请使用服务总线上的服务。 你可以看到Rhino.ServiceBus,nServiceBus和MassTransit用于.Net本地实现, RabbitMQ用于不同的http://blogs.digitar.com/jjww/2 ...

相关文章

更多

最新问答

更多
  • Android宽度:100%修复(网站接管问题)(Android width:100% fix (website takeover issue))
  • C ++函数/方法设计的良好实践(Good practice in C++ function/method design)
  • 计算其他表中不存在的所有记录 - SQL查询(Count all records that does not exist to other table - SQL Query)
  • 为什么我要用JPA共享ID?(Why do I get shared Ids with JPA?)
  • asp.net - 如何显示来自html格式的数据行的字段(asp.net - how to display a field from data row that is in html format)
  • 我们如何使用ActiveRecord从连接表中删除行?(How can we delete rows from a join table by using ActiveRecord?)
  • ng-class搞乱了类的顺序(ng-class messing with the order of classes)
  • oracle 12g无效数字错误(oracle 12g invalid number error)
  • 更改ng-src值onclick(Change ng-src value onclick)
  • 如何在android中自动添加自定义依赖项以创建新项目?(How to add custom dependencies automatically in android for ever a new project is created?)
  • datetime函数在PHP中(datetime function in php)
  • 在javascript中获取会话数组的值(in javascript get the value of a session array)
  • 如何在UTF8中编译LaTeX?(How can I compile LaTeX in UTF8? [closed])
  • Rspec:“array.should == another_array”,但不用担心订单(Rspec: “array.should == another_array” but without concern for order)
  • Logcat错误:无法在android片段中加载视图(Logcat error: unable to load view in android fragments)
  • JavaFX的。(JavaFX. Adding items to the list in different threads is not working)
  • 从GDATA日历资源迁移到Google Calendar Resource api(Migrate from GDATA calendar resource to Google Calendar Resource api)
  • SSRS 2008 - 以零情景处理分割(SSRS 2008 - Dealing with division by zero scenarios)
  • 我如何以编程方式添加一个listView列标题的点击事件(How can I add a listView column header a click event programmatically)
  • Wxpython:无法检索有关列表控件项XXX的信息(Wxpython: Couldn't retrieve information about list control item XXX)
  • 使用Tortoise SVN在SVN存储库中移动目录(Move Directory across SVN repository using Tortoise SVN)
  • 天蓝色服务结构集群中的web api无状态服务是否在一段时间不活动后进入休眠状态?(Do web api stateless services in azure service fabric cluster go to sleep after a period of inactivity?)
  • 我可以设置intelliJ来突出显示PHP编码风格吗?(Can I set intelliJ to highlight php coding style?)
  • 用javafx创建一个Truetype字体文件(Creating a Truetype Font file with javafx)
  • Spring ftp配置错误(Spring ftp configuration is wrong)
  • 使用gsub去除多个字符(Using gsub to strip multiple characters)
  • 续订推送证书并保持当前的App Store App正常工作(Renew Push certificate and keep current App Store App working)
  • js:ES5和ES6之间关于'this'关键字用法的一个令人困惑的观点(js: one confusing point about 'this' keyword usage between ES5 and ES6)
  • window.onload vs $(document).ready()(window.onload vs $(document).ready())
  • 在Swift中,如何声明一个符合一个或多个协议的特定类型的变量?(In Swift, how can I declare a variable of a specific type that conforms to one or more protocols?)