【发布时间】:2017-07-19 06:18:47
【问题描述】:
我正在尝试使用身份验证更改系统代理设置。系统代理可以更改成功,但是当我的应用重新启动时,总是弹出授权对话框(需要用户名和密码)。
我怎样才能一劳永逸地授权?
我在 GitHub 上有一个带有源代码的演示应用程序:https://github.com/codinn/SystemProxySettingsDemo
详情:
演示应用说明
更改系统代理设置的演示。
问题
点击“启用系统代理”后,会弹出请求授权的对话框,后续点击不会再弹出,没关系。 但是如果我们退出并重新启动应用程序,授权对话框将再次弹出。
我们怎样才能一劳永逸地授权?
复制步骤
- 启动演示应用“SystemProxySettingsDemo”
- 点击“启用系统代理”按钮,会弹出授权对话框
- 系统网络首选项中的 SOCKS 代理设置将更改为主机:127.0.0.1,端口:8888
- 点击“禁用系统代理”按钮清除系统网络首选项代理
- 退出应用,然后重新启动
- 点击“启用系统代理”按钮,再次弹出授权对话框
参考文献
- GitHub 存储库:https://github.com/codinn/SystemProxySettingsDemo
- 苹果官方样品:https://developer.apple.com/library/content/samplecode/EvenBetterAuthorizationSample/Introduction/Intro.html
- 文件“ViewController.swift”:创建授权参考、请求授权、系统网络首选项代理设置。
函数定义:
// requesting authorization with “AuthorizationCopyRights”
// set system network preferences proxy with “SCPreferencesCreateWithAuthorization” and “SCPreferencesPathSetValue”
func socksProxySet(enabled: Bool)`
4。文件“CommonAuthorization.swift”:设置/获取授权策略数据库条目 5. 文件“codinnDemoRightRemove.sh”:清除策略数据库条目属于演示应用
其他说明:
- 我尝试使用“AuthorizationRightSet”将授权权限存储到策略数据库(将策略数据库规则属性“超时”设置为 0 或 3600,或删除属性“超时”),但它不起作用李>
- 还尝试使用“kAuthorizationRuleClassAllow”或“kAuthorizationRuleAuthenticateAsAdmin”作为函数“AuthorizationRightSet”的参数“rightDefinition”的值,但它也不起作用
【问题讨论】:
标签: macos configuration authorization system