Asp.net web api ASP.NET WebAPI如何在对用户进行身份验证时保留状态变量

Asp.net web api ASP.NET WebAPI如何在对用户进行身份验证时保留状态变量,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,我有一个ASP.NETWebAPI项目,该项目将json数据服务于我的移动应用程序 在向Api发送每个移动请求时,我都会发送带有用户sessionid的http头,以便在服务器端验证该请求 因此,如果我的移动应用程序请求10个json数据目录,为了返回数据,每个请求都必须验证sessionid是否有效 我的问题是,是否可以像传统的http会话那样保存服务器上的状态,这样每次都可以保存到数据库的往返,以验证用户sessionid 我以前在web.config文件中有一个过滤器,每个控制器方法上都有

我有一个ASP.NETWebAPI项目,该项目将json数据服务于我的移动应用程序

在向Api发送每个移动请求时,我都会发送带有用户sessionid的http头,以便在服务器端验证该请求

因此,如果我的移动应用程序请求10个json数据目录,为了返回数据,每个请求都必须验证sessionid是否有效

我的问题是,是否可以像传统的http会话那样保存服务器上的状态,这样每次都可以保存到数据库的往返,以验证用户sessionid

我以前在web.config文件中有一个过滤器,每个控制器方法上都有一个过滤器来验证用户sessionId。在我的过滤器中,我曾经有:

  ....
 if (Thread.CurrentPrincipal.Identity.IsAuthenticated) return;
  ....
这确实起到了作用,但现在我被迫在我的WebAPI项目中添加一个Razor网站,因此我不得不将身份验证模式更改为:

<authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" defaultUrl="~/Home/Index" name=".ASPXFORMSAUTH" protection="All" timeout="30" slidingExpiration="true" />
    </authentication>

FormsAuthentication设置HttpContext.Current.User.Identity.IsAuthentication,这是否足够?或者您正在询问其他一些状态吗?现在,对于auth=Forms,如果用户登录门户,那么如果他尝试登录其他应用程序,则会说仍然是IsAuthenticated=trueWell,Forms auth会设置一个cookie,并在每次请求时识别该cookie并对用户进行身份验证。这不是您想要的吗?问题是,对于100%Rest API来说,这是不正确的,对吗?因为WebAPI不能在服务器端存储Cookie,会话Cookie也不是请求的一部分,只是不是QueryString/post数据的一部分,而是头,不会在服务器端存储任何内容。