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



我有一个复杂的项目,包括一个ASP MVC网站,ASP SignalR中心和Xamarin移动应用程序(所有三个单独的项目)。由于 ASP MVC Web 引用 SignalR 中心,并且两者一起托管,因此两个项目只能有一个 OWIN 启动类(否则我会收到一个错误,指出只能有一个 OWIN 启动类)。由于我还在 Web 应用中使用 ASP 标识,因此我调用 app.UseCookieAuthentication 方法,该方法在允许我与 SignalR 中心通信之前需要一个 Cookie。因此,Xamarin 移动应用和 SignalR 中心之间的通信是不可能的。

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

  1. 是否可以仅在 Web 应用程序中使用 cookie 身份验证,以及不在信号中心?通过创建 2 个 OWIN 启动类,或者通过指定,哪些请求确实需要 cookie?
  2. 如果上述解决方案不可行/"正确",如何在 Xamarin 应用中实现 Cookie 身份验证?官方网站建议使用 response.Cookies[FormsAuthentication.FormsCookieName] ,但FormsAuthentication.FormsCookieName在 Xamarin 中不可用。我应该如何创建饼干?然后,我是否能够在访问 SignalR 中心之前调用 Web 应用登录方法?

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

相关内容

  • 没有找到相关文章

最新更新