1

我们正在构建 ASP.NET MVC 应用程序,该应用程序应该管理运动对象的预订(网球场、壁球场等)。

用户在与应用程序交互时不应该只在一个俱乐部的范围内行动。

导航到应用程序应类似于:appname.com/clubName 或 clubName.appname.com

问题: 1. 保存所选俱乐部数据的最佳方式是什么。我们已经实现了在会话中存储(注入有关俱乐部 durint 应用程序打开的信息),但我们了解到使用会话是相当不推荐的解决方案。我们正在使用 ApiController,因此为了获得会话,我们必须破解路由(注册自定义 RouteHandler)。会话机制是否适用于这个问题?

var session = HttpContext.Current.Session;
if (session != null)
{
   service.ClubName = session[CustomSessionKeys.ClubName.ToString()].ToString();
}
  1. 为我们的问题使用子域是个好主意吗?

提前谢谢了 :)

4

2 回答 2

0

通常,Web api 的工作方式与普通的 mvc 应用程序不同。
在 MVC 应用程序中,您将使用会话 cookie 使 Internet 像状态机一样工作。但是,这不是 web api 通常所做的。在 web api 中,您提供某种形式的身份验证(例如,通过标头身份验证字段)。
但是在请求中,您当然希望跟踪当前用户,或者在 asp.net 术语中,当前主体。
我们通过委托处理程序设定原则

HttpContext.Current.User = user;

如果您想要更多关于如何完成整个身份验证的代码,请告诉我。

当然,这都是服务器端,在客户端,您可以将所需的任何信息保存在会话存储中。尽管您可能想考虑使用本地存储(取决于您要赋予它的语义)。它们都以相同的方式工作。您可以查阅W3C 网络存储规范以获取有关这两个方面的完整信息。

于 2013-11-06T10:19:49.433 回答
0

好吧,我猜你有很多选择!

  1. 按照您的建议选择路线,将俱乐部 ID 或名称作为 URL 的一部分。如果我需要链接给用户更多意义,我会这样做。
  2. 曲奇饼!是的,如果信息不敏感,请将其存储在 cookie 中。如果这个 cookie 只能从服务器端访问,那么不要忘记将其设置为 HttpOnly
  3. 会议。我同意你的观点,除非数据非常敏感并且我需要确保它的安全,否则我不会选择会话。
于 2013-11-07T08:09:09.343 回答