【问题标题】:UITextField Password Autofill ConfirmationUITextField 密码自动填充确认
【发布时间】:2017-12-26 18:57:23
【问题描述】:

我一直在使用 UITextField 的密码自动填充功能来登录我的后端,但到目前为止,我还无法找到一种方法来实际确认或验证用户是否已通过 TouchID 进行身份验证以访问他们的密码。

我是疯了还是因为这个功能已经融入 iOS,我们实际上无法检查用户是否能够成功进行身份验证?

或者我错过了调用 LocalAuthentication API 中的某种委托调用?

TIA 为您提供帮助。

【问题讨论】:

  • 请出示代码。
  • @meaning-matters 实际上没有代码可以将 UITextField 转换为密码字段并调用 Safari 自动填充管理器。这是在 Interface Builder 中完成的。
  • 这就是为什么我想知道我是否错过了代表呼叫或文本字段调用的内容。
  • 您不会收到关于用户已通过身份验证解锁钥匙串密码存储的特定通知,因为此时他们尚未对您的应用进行实际身份验证。您应该通过文本字段委托获得一个指示,表明它现在具有内容。您仍然需要将凭据提交到后端以进行验证。用户使用存储的凭据还是输入凭据对您的应用无关紧要。当显示 Touch ID 提示时,您将收到一条通知,说明您的应用已退出活动状态,一旦用户完成,它将恢复活动状态
  • @Paulw11 我明白你在说什么。我已经继续并刚刚实现了一个自定义控件,以使我的生活更轻松。感谢您的帮助。

标签: ios swift touch-id localauthentication


【解决方案1】:

我使用这样的方法和结果回调,有时我存储结果以便稍后在会话中查找。不确定这是否是您正在寻找的东西,或者您是否需要更高级的东西。这是我的课程的一部分,我在其中创建了我自己的委托,我也调用了身份验证或失败。

private func authenticateUser(completion: @escaping (Bool)->()) {
    let context = LAContext()
    var error:NSError?
    let reason = "Authenticate for access"

    context.localizedFallbackTitle = ""

    if(context.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error)){
        context.evaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason, reply: { (success, error) -> Void in
            if(success){
                completion(true)
            } else {
                completion(false)
            }
        })
    }
}

【讨论】:

  • 嗨,保罗,感谢您的快速回复。我也有一个类似的方法,我可以随时随地调用,但是当您将 UITextField 指定为密码字段时,我引用了以 Safari AutoFill 管理器的形式提供给我们的“免费赠品”。 Apple 似乎没有向我们提供任何方法来确认用户已使用此方法进行身份验证。
  • 对不起,我帮不上忙。似乎没有确认它带有生物识别技术。
猜你喜欢
  • 1970-01-01
  • 2019-01-27
  • 2019-09-02
  • 2023-01-10
  • 2018-03-05
  • 2019-11-27
  • 2019-04-05
  • 2010-11-29
  • 1970-01-01
相关资源
最近更新 更多