如何在Xamarin SignalR中使用cookie身份验证

时间:2016-03-22 10:38:57

标签: asp.net-mvc xamarin signalr asp.net-identity

我有一个复杂的项目,包括ASP MVC网站,ASP SignalR中心和Xamarin移动应用程序(所有三个独立的项目)。因为ASP MVC Web引用SignalR集线器并且两者都在一起托管,所以两个项目只能有一个OWIN Startup类(否则我会收到一条错误,说只有一个OWIN Startup类)。由于我在Web应用程序中也使用ASP Identity,因此我调用app.UseCookieAuthentication方法,然后在允许我与SignalR中心通信之前需要cookie。因此,Xamarin移动应用程序和SignalR中心之间的通信是不可能的。

我相信,这个问题可以用两种不同的方式回答:

  1. 是否可以在Web应用程序中使用cookie身份验证 不在SignalR中心?通过创建2个OWIN启动类, 或者通过指定真正需要cookie的请求?
  2. 如果上述解决方案不可行/"正确",如何在Xamarin应用程序中实现cookie身份验证? official web建议使用response.Cookies[FormsAuthentication.FormsCookieName],但Xamarin中不提供FormsAuthentication.FormsCookieName。我该如何创建cookie?在访问SignalR集线器之前,我是否可以调用Web应用程序登录方法?

1 个答案:

答案 0 :(得分:0)

当然可以从Xamarin传递身份验证Cookie。在某种程度上,你正在进行http呼叫; http调用可以包含标头,而cookie只是一个专门的标头。检查您使用的交互的HTTP流量,并注意应该有一个带有.aspnetcookie行名称的标题,以及name = reallylongstringoflettersandnumbers行的值;您可以创建一个API方法,该方法接收用户和密码并授权用户,获取从该请求发回的cookie,并将其包含在任何将来的请求中,包括SignalR请求。我正在做同样的事情,如果你找不到你需要的东西,请随时寻求更多的帮助。