ASP.NET MVC4如何发布和检索特定用户特有的数据

时间:2013-06-10 04:52:14

标签: asp.net-mvc authentication asp.net-mvc-4

我一直在学习如何使用ASP.NET MVC4,并且已经开始认真地对用户和用户角色进行身份验证,并使用实体框架将数据发布到SQL。

但是,我无法找到任何指南/资源(可能我不知道正确的术语)来发布和检索特定用户特有的数据。例如,如果用户是一个存储每个用户个人数据的网站,用户将如何仅查看他们创建的条目。

尝试执行此操作时会使用哪些模式/设计?

2 个答案:

答案 0 :(得分:1)

为特定数据创建数据沙箱通常与身份验证相关联。您可以通过ASP.Net访问这么多方法。

首先,即使用户从未登录,也会识别每个用户。他们获得会话标识符。它实际上为该用户在内存中创建了一个小位置,您可以在其中存储任何与用户相关的信息。将Sessions视为每个用户的围墙花园。

 Session["UserFullname"]

这有效,但实现Session受时间限制,因此非常不稳定。利用它,但不依赖它。

下一个方法是验证用户。这是使用Cookie完成的,但通常由ASP.Net Membership或其他身份验证提供程序为您透明地处理。要访问经过身份验证的用户,您只需在Controller操作中使用一个简单的行。

// User is the property
User.Identity.Name

这两种方法都可以存储您用于查询特定数据的用户信息。

 Select * From Orders Where UserId = *User.Identity.Name*

请注意,只要您处于Web环境中,Session和User都可以通过HttpContext.Current访问。

 HttpContext.Current.User
 HttpContext.Current.Session

除非您不在Controller内,或者在另一个尚未授予您访问HttpContext的类内,否则您不需要以这种方式访问​​它们。我也不建议这样做,因为您的代码可以在HttpContext不可用的Web应用程序之外使用。

我希望这是有道理的,请随时向我提问。

答案 1 :(得分:0)

这不是关于mvc,而是关于将数据与特定用户相关联的问题。你必须问问自己,你将如何向用户识别一段数据。

您这样做的方法是以某种方式将数据绑定到数据存储中的用户。 在关系数据库中,您可以通过使用User表并使用该表上的唯一键将数据插入另一个表(如Order)来完成此操作。然后,订单将具有用户ID。

当用户登录时,您可以将该ID存储在会话中并使用该ID根据ID过滤掉订单。