2

我有一个 MVC Powerpack Web 应用程序,它具有最少的 servicestack 配置,它还与充当 API 的单独 ServiceStack Web 项目通信。所以换句话说,我所有的服务、身份验证和注册都来自服务项目,而不是 MVC 项目。在 MVC 项目中,我的控制器继承自 ServiceStackController 并使用 CustomUserSession,如 SocialBootstrapApi 演示中所示。

我想知道最好的方法是让我在两个项目之间共享会话信息。我希望能够用 [Authenticate] 属性装饰我的控制器,并在 MVC 应用程序中使用 ServiceStack 身份验证。

我查看了各种示例,也如提到的 SocialBootstrapApi 应用程序 - 大多数示例显示在 1 个项目中配置的 ServiceStack。如何通过单独的项目实现这一点,以便我可以在 2 之间共享会话信息并访问 CustomUserSession,同时能够使用 [Authenticate] 标签来锁定我的控制器?

4

1 回答 1

1

如果您的两个应用程序在同一个域上,它们应该能够读取相同的身份验证 cookie。如果它们位于两个不同的域上,那么您必须实施某种单点登录过程/握手。

我不确定 ServiceStack 会丢弃哪种 cookie,但如果您的 MVC 应用程序引用了 ServiceStack auth 库,那么您应该能够解码 ServiceStack 吐出的 cookie 并在您的 MVC 应用程序上设置用户主体。

 HttpContext.User = DecodeServiceStackAuthCookie(HttpContext.Current);

 IPrincipal DecodeServiceStackAuthCookie(HttpContext context) { /* your code */ }

希望这能让你走上正确的道路。

于 2013-08-28T23:46:17.117 回答