ios - 每次启动移动应用程序时,我都应该在网络服务中检查用户身份验证(用户名、密码、设备 token )吗?

标签 ios web-services authentication mobile-application cocoa-design-patterns

每次启动移动应用程序时,我都应该在网络服务中检查用户身份验证(用户名、密码、设备 token )吗?

我目前正在开发一个 ios 应用程序,需要用户使用他们的用户名和密码登录(第一次启动应用程序)。 之后用户信息将保存在应用本地数据中,用户无需再次输入用户名和密码。

我的想法是通过在应用程序启动时调用网络服务来检查用户是否仍然是活跃用户。

我的问题是,是否有必要在应用程序启动时进行检查。?

是否有任何设计模式来控制 ios 应用程序的用户身份验证?

最佳答案

  1. 通常,您不应在本地存储用户名和密码,但如果必须,则将其存储在 iOS 钥匙串(keychain)中,而不是在本地应用程序数据库中。 (如果您不熟悉钥匙串(keychain),请关注 this tutorial)

  2. 为了能够“不”在应用程序中保存用户名和密码,您需要实现一种身份验证机制(如 OAuth 2:check this tutorial),该机制通过 WebView 处理身份验证并需要客户端仅使用授权 token 。

  3. 要刷新 token ,您需要一个“刷新 token ”api,它可以检查 token 是否有效,如果过期,您可以提示用户输入凭据或使用钥匙串(keychain)中存储的凭据来自动刷新 token 。

注意:您可以在 https://www.raywenderlich.com 上找到更多此类教程和其他地方,如果你只是谷歌它。

注意 2:虽然 OAuth 2 更侧重于为“第三方”提供访问权限,但对于普通身份验证机制来说,它是一个足够好的模型。请在评论中避免对建议使用 OAuth 2 进行正常身份验证的所有仇恨。

关于ios - 每次启动移动应用程序时,我都应该在网络服务中检查用户身份验证(用户名、密码、设备 token )吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112689/

相关文章:

c# - 连接到需要身份验证的 SOCKS 代理

ios - 如何快速从颜色矩阵创建图像?

c# - 如何将 Web 服务中定义的类型提供给另一个 Web 服务(共享类型)?

java - 没有 sun-jaxws.xml 的 Tomcat 上的 JAX-WS Web 服务

java - Web服务向后兼容性

angular - Nebular - 登录后未正确获取 token 有效负载

ios - 删除 TableView 中的单个分隔符

ios - 替换 UAPush 方法 appReceivedRemoteNotification?

ios - 具有不同格式的 Swift Date 对象

authentication - 使用 OpenID 或 OAuth 的匿名登录