2

我有一个网站(MVC 4)和 WebService(Web API)。WebSite 有一个身份验证 cookie,它会在 WebSite 服务器端代码调用服务时对其进行解密,以便将安全令牌发送到 WebService。这很好用。

但是,网站有 JavaScript,我想直接调用 WebService。我已尝试共享 MachineKey 和 Auth 信息,但 cookie 并未通过 WebApi 携带。

我的后备方案是通过网站将所有调用路由到 WebService;但这又丑又慢。

有任何想法吗?

4

1 回答 1

1

正确答案是达林的。为了在服务站点和网站之间共享登录 cookie,它们都必须在同一个域中;所以例如服务站点可以在

http://svc.mysite.com

该网站可能位于

http://www.mysite.com

然后浏览器将允许两个站点共享相同的cookie。

另一种方法是让站点对服务站点进行身份验证,并获取可以传递给 javascript 的某种令牌。但是,除非您在 HTTPS 上运行,否则这将是非常不安全的,因为令牌将“以明文形式”可用。

最后一种机制(也是我认为最常见的解决方案)是通过网站路由所有 API 访问,但这在许多情况下并不理想。

于 2013-04-08T08:06:41.237 回答