【问题标题】:How to use cookie authentication in Xamarin SignalR如何在 Xamarin SignalR 中使用 cookie 身份验证
【发布时间】:2016-07-09 04:57:30
【问题描述】:

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

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

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

【问题讨论】:

  • 我遇到了同样的问题,我在现有应用程序上有基于 cookie 的身份验证,需要通过 xamarin signalR 连接到它,这有什么运气吗?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 2021-10-07
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    相关资源
    最近更新 更多