swift - 如何从多个凭据中获取特定的用户凭据以用于保护空间
问题描述
我在一项任务中制作了包含 2 个分别使用领域“REALM1”和“REALM2”的基本身份验证的 rest API。每次我们访问 API 时,我们都需要为各自的 REALM 输入身份验证。我们希望 URLSession 使用这个 api 从服务器获取数据。但是当我们调用这个 API 时,第一个
func urlSession(URLSession, task: URLSessionTask, didReceive: URLAuthenticationChallenge, completionHandler: (URLSession.AuthChallengeDisposition, URLCredential?) -> Void)
方法是为 REALM1 调用的。使用指定的保护空间调用完成处理程序。但是对于 REALM2
func urlSession(URLSession, task: URLSessionTask, didReceive: URLAuthenticationChallenge, completionHandler: (URLSession.AuthChallengeDisposition, URLCredential?) -> Void)
方法不会被调用。而是将 REALM1 凭据发送到 REALM2 的服务器。发生这种情况是因为在 url 会话配置中,url credential store 属性默认不是 nil,并且 url credential persistent property 是永久的。因此,如果我们将 url session 配置中的 url credential store 属性设置为 nil,并将 url credential 中的 persistent 属性设置为 none。然后func urlSession(URLSession, task: URLSessionTask, didReceive: URLAuthenticationChallenge, completionHandler: (URLSession.AuthChallengeDisposition, URLCredential?) -> Void)
每个任务相关的挑战都会调用方法,例如 NSURLAuthenticationMethodHTTPBasic 等。我在 REALM2 中有多个用户,他们的凭据存在于钥匙串中,然后如何为钥匙串中的 REALM2 选择特定用户的凭据。
解决方案
推荐阅读
- pyspark - SparkContext 只能在驱动上使用
- javascript - 提交表单后如何清除表单并将数据传递给php文件而不重新加载页面
- python - 接受输入文件路径的 Python 函数
- stackdriver - OpenCensus 未在 Stack Driver 中的 Google App Engine 上显示跟踪
- objective-c - 我怎样才能获得这种类型的导航转换?
- real-time - 在 ARM 中启用 FTRACE 以跟踪系统的实时特性
- java - 如何在 mybatis 中使用 if 条件检查选定的列?
- linux - 我如何在期望中获得昨天的日期
- r - 过滤具有 X 列且值大于 Y 的行
- javascript - 如何使用 mvc 或 javascript 通过另存为对话框下载文件