【问题标题】:Set the request Authorization header in SFSafariViewController在 SFSafariViewController 中设置请求授权头
【发布时间】:2018-04-26 11:42:03
【问题描述】:

我有具有用户名和密码的应用程序,以便用户登录到该应用程序。 一些(不太重要的)功能仍然是网页。

但为了用户友好,用户在登录后再次登录很烦人。

我正在查看 SFSafariViewController,它看起来很有希望,但我试图在调用 URL 时设置 Authorization 标头。我已经知道用户令牌,但需要将其设置为授权标头。

所以流程是这样的:

User log in inside App -> get token -> set this token as Authorization header -> call my web app url

这个控制器可以做到吗?

【问题讨论】:

  • @Jeff,您浏览的网站是否由您控制?如果是,那么您应该能够使用 cookie 来做到这一点? SFSafariViewController 将与 Safari 共享 cookie。另外看看这是否有帮助github.com/MrCaiWH/HHDemo/blob/…
  • 嗨@TarunLalwani,(@Jeff 没有发布问题:D)。是的,该网站在我的控制之下,是的,我可以使用 cookie 来做到这一点。但是,我记得你不能用 SFSafariViewController 中的代码设置你自己的 cookie。我知道它可以与 Safari 共享 cookie 存储,但我不想先用 Safari 登录,而是在我的应用程序中......
  • 您可以导航到 SFSafariViewController 中设置 cookie 本身的 url?既然你控制了网站,那么创建这样的 url 应该仍然是可能的?
  • 因此,如果我理解正确,您建议我在网站上创建新端点,将用户名和密码放入 url 中,如果正确设置 cookie。在按钮上,我首先打开这个端点,然后在设置 cookie 时打开原始端点?我怎么知道什么时候需要调用原始站点?你有没有一个接一个地调用一个站点的例子...
  • 所以你将重定向到第一个 url 本身,它应该检查是否设置了 cookie,如果没有,它会重定向到登录,用户登录并成功登录后,你重定向回现在可以工作的第一个 url .下次您来时,Safari 将存储您的 cookie,因此在 cookie 有效之前不会显示登录页面。如果您需要在标头中设置令牌,您将使用 axios 中间件自动将身份验证标头添加到请求中。所以最终它都可以用网络本身来处理。您需要从应用程序传达的任何信息都可以作为查询参数转到特殊 url

标签: token jwt request-headers sfsafariviewcontroller


【解决方案1】:

正如所讨论的,你应该做什么

当您从应用程序登录时,您会收到一个令牌。接下来,您应该为login 创建一个额外的端点,例如loginWithToken。相同的格式可能类似于

https://example.com/loginWithToken?token=xyz&returnURL=def

从您的应用程序中,您将导航此 URL,然后它会执行与 login 页面相同的操作。将此令牌存储在 cookieslocalStorage 中。完成后,页面应重定向到returnURL

这样应用就无需从SFSafariViewController重新登录

【讨论】:

  • 在 URL 上传递的令牌是否存在任何可能的安全问题?我猜不是,但获得更多意见是件好事。
  • 我认为这不应该有安全问题。我在少数地方见过这种方法
  • 这绝对是一个安全问题。用户可能会在页面加载前点击分享按钮,然后在社交媒体上无意中分享 URL(包括他们的令牌)。
  • @jason,您可以使用 JWT 使令牌超时。这段时间可以任意短
  • 正确,这是对某人以其他用户身份登录的缓解措施。但是,JWT 可能具有其他编码的 PII,例如名称或电子邮件。您必须非常小心这种方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 2018-01-31
  • 2017-04-17
  • 2021-12-19
  • 2015-07-21
  • 1970-01-01
相关资源
最近更新 更多