WebAPI和MVC之间的共享身份验证和HttpContext会话在不同的服务器上运行

时间:2014-03-24 19:11:26

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

我有一个MVC 4.5应用程序,用于提供网站内容 - 我使用它进行捆绑和路由,非常基本。

在结帐页面上是一个使用knockoutjs的多步骤表单。

然后我有一个单独的网络服务,通过来自knockoutjs结帐提交的AJAX接受订单。

网站在不同的服务器上运行(https://www.myapp.comhttps://api.myapp.com)。

这个想法是使用从api获取的令牌并在api通信期间使用。

对于网站的其他部分,有一个CAPTCHA类型字段的提交,

从代码here开始,会话与context.HttpContext.Session["captchastring"] = randomString;一起使用。同样,我需要存储用户会话的计算值,以便我可以识别单个结账并在提交时验证CAPTCHA(以及其他内容)。

由于我们无法在两个不同的Web服务器进程之间共享此上下文,我想我们可以从MVC Web服务器双重调度,要求API获取会话令牌,然后使用此内置的令牌呈现视图但这感觉很笨重。

我有两个问题:

  1. 我是否会犯这个错误,或者我咬紧牙关并放一些 应用程序的一部分在同一个MVC应用程序中的WebAPI中 会议可以分享吗?

  2. 存在哪些其他身份验证方案对此有用 以上?

1 个答案:

答案 0 :(得分:0)

您可以制作另一个用于身份验证的API项目。所以mvc项目和api项目将使用第三个api进行身份验证。

但是由于您具有基于令牌的身份验证,该令牌将保存到db nad中,我认为两个项目都使用相同的数据库,因此您可以轻松地声明令牌。最好将toke放入请求标题中。