我有一个MVC Powerpack Web应用程序,该应用程序具有最小的服务堆栈配置,该应用程序还与作为API的单独ServiceStack Web项目进行通信。换句话说,我的所有服务,身份验证和注册都来自服务项目,而不是MVC项目。在MVC项目中,我的控制器继承自ServiceStackController,并且正在使用CustomUserSession,如SocialBootstrapApi演示中所示。
我想知道最好的方法是允许我在两个项目之间共享会话信息。我希望能够使用[Authenticate]属性装饰我的控制器,并在MVC应用程序中使用ServiceStack身份验证。
我已经查看了各种示例,也提到了SocialBootstrapApi应用程序 - 大多数示例都显示了在1个项目中配置的ServiceStack。如何使用单独的项目实现这一点,以便我可以在2之间共享会话信息并访问CustomUserSession,同时能够使用[Authenticate]标签锁定我的控制器?
答案 0 :(得分:1)
如果您的两个应用程序位于同一个域中,则应该能够读取相同的身份验证cookie。如果它们位于两个独立的域中,那么您必须实现某种单点登录进程/握手。
我不确定ServiceStack会丢弃哪种cookie,但是如果你的MVC应用程序引用了ServiceStack auth库,那么你应该能够解码ServiceStack吐出的cookie并在你的MVC应用程序上设置User Principal。 / p>
HttpContext.User = DecodeServiceStackAuthCookie(HttpContext.Current);
IPrincipal DecodeServiceStackAuthCookie(HttpContext context) { /* your code */ }
希望能让你走上正确的道路。