gpt4 book ai didi

swift - Kitura iOS 应用程序用户身份验证 mongodb

转载 作者:行者123 更新时间:2023-11-28 08:18:08 27 4
gpt4 key购买 nike

我当前的应用程序正在解析服务器上运行,我想将它移植到 Kitura。到目前为止,我已经成功连接到在 Parse Server 后面运行的 mongodb 并提供数据。

对于 web 部分,我已经设法使 http 基本身份验证工作,使用带有用户 ID 和密码的静态字典。

我在 iOS 部分苦苦挣扎。我的应用程序已经有很多用户。用户存储在 mongodb 的表中。我有三种类型的用户:

  • Facebook 用户。使用 Facebook 帐户注册的用户。
  • 直接用户。使用该应用的注册表单创建帐户的用户。
  • 匿名用户。我为他们生成了一个唯一的 ID,存储在他们的设备中,这样我就可以保留他们的数据。对于这个问题的上下文,他们应该被视为直接用户。

为了将用户从解析服务器迁移到 kitura,我计划采取以下步骤:

  1. 在第一次启动应用程序时。创建一个随 secret 钥并将其存储在用户表中。
  2. 保存后,使用此 key 登录 Kitura。
  3. 成功登录 Kitura 后删除 key 。

我已经安装了移动访问客户端和推送通知。

我无法解决的是使用什么方法来验证服务器端和客户端的用户。

到目前为止,基本的 http 身份验证工作(仅限直接用户),但我相信有更好的方法。

我当前的基本 http 身份验证

let url = "http://172.20.10.3:8080/private2/class/KiteSpot?responseType=json"
var mutableURLRequest = URLRequest(url: nsURL)
mutableURLRequest.httpMethod = "GET"
let loginString = "<user>:<pass>"
let loginData = loginString.data(using: String.Encoding.utf8)!
let base64LoginString = loginData.base64EncodedString()
mutableURLRequest.addValue("DirectUserToken", forHTTPHeaderField: "X-token-type")
mutableURLRequest.addValue("text/plain", forHTTPHeaderField: "Accept")
mutableURLRequest.addValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
self.sendRequest(mutableURLRequest, onSuccess: onSuccess, onFailure: onFailure)

最佳答案

基于 SSL 的基本身份验证是一种合理且简单的解决方案,但 has a few shortcomings .

Mobile Client Access 实现 OAuth2 协议(protocol),该协议(protocol)使用 token 授予策略,这种策略更安全一些,因为您不会在每次请求时通过网络发送用户的原始凭据。 MCA 支持 Facebook、Google 和自定义身份验证方案。 MCA/OAuth2 的主要优点是,如果您的客户端需要被授予对多个其他服务器或第三方的访问权限,这些方将只需要一个 token (带有过期规则)来进行身份验证。 ( Good article for getting started with MCA. )

根据您的应用程序所做的事情,您决定为身份验证方案选择的内容会受到影响。


此外,我不确定您是如何在数据库中存储用户名和密码的,但我会推荐 salting + hashing如果您还没有准备好在您的数据库遭到破坏时确保您的用户安全。

关于swift - Kitura iOS 应用程序用户身份验证 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42023394/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com