会议是一个不错的选择吗?

时间:2013-11-06 01:06:44

标签: asp.net-mvc-4 session asp.net-web-api subdomain

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

在与app互动时,用户不应仅在一个俱乐部的范围内行事。

导航到应用应该像: 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. 为我们的问题使用子域名是否是个好主意?
  2. 非常感谢提前:)

2 个答案:

答案 0 :(得分:0)

通常,网络API与普通的mvc应用程序的工作方式不同。
在MVC应用程序中,您将使用会话cookie使互联网充当状态机。但是,这不是通常用于web api的操作。在web api中,您提供某种形式的身份验证(例如,通过标头身份验证字段)。
但在请求中,您当前想要跟踪当前用户,或者以asp.net术语,跟踪当前的主体。
我们通过委托处理程序

设置原则
HttpContext.Current.User = user;

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

这是所有服务器端,在客户端,您可以在会话存储中保留所需的任何信息。虽然您可能想要考虑使用本地存储(取决于您想要给它的语义)。它们都以相同的方式工作。 您可以查阅W3C webstorage specification以获取有关这两者的完整信息。

答案 1 :(得分:0)

我猜你有很多选择!

  1. 按照您的建议去路线,将俱乐部ID或名称作为URL的一部分。如果我需要链接来为用户提供更多意义,我会支持这一点。
  2. 曲奇!是的,如果信息不敏感,请将其存储在cookie中。如果这个cookie只能从服务器端访问,那么不要忘记让它成为HttpOnly
  3. 会话。我同意你的观点,除非数据非常敏感,否则我不会选择会话,我需要确保安全。