xcode - OS X Mavericks 中的自定义登录/锁定屏幕

标签 xcode macos osx-mavericks sfauthorizationpluginview

我正在尝试覆盖 OS X 中的默认登录/锁定屏幕,以允许用户以提供密码之外的其他方式登录(想想指纹扫描仪或“敲门解锁”的工作原理),我正在寻找现在花了几个小时寻找一种方法 - 我发现看起来有用的是授权插件 ADC 引用和此示例:https://developer.apple.com/library/mac/samplecode/NameAndPassword/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004022

这个NameAndPassword xcode项目有点过时,但我通过指定Base SDK(有一个硬编码的错误路径)就成功地构建了它,然后我将生成的.bundle文件放入/Library/Security/SecurityAgentPlugins 目录。锁定屏幕后没有任何变化,但我知道我需要将授权角色添加到 /etc/authorization 文件中,我知道 Mavericks 中不再存在该角色(有这个 auth.db 文件和整个身份验证 API),但我因此被困在这里 - 我不知道如何将 NameAndPassword 放入此数据库中。

请告诉我如何正确地做到这一点,或者您是否知道实现我的目标的其他方法。

最佳答案

我找到了一种编辑数据库的方法 - 起初,我尝试直接 /var/private/db/auth.db sqlite 修改,但它不起作用,所以一段时间后我设法比我想象的更容易做到这一点:

  1. security authorizationdb read system.login.console > outfile.plist

  2. 此后,您需要修改生成的 outfile.plist正如 NullAuthPlugin 自述文件中所述:

    <key>mechanisms</key>
      <array>
        <string>NameAndPassword:invoke</string>
    

    (最后一行是您需要添加到文件中的行)。

  3. 然后,将其保存到数据库:

    security authorizationdb write system.login.console < outfile.plist

然后,更改应该可以在系统的任何登录/锁定屏幕上看到,但是要小心!

您将无法使用当前版本的 NameAndPassword 示例进行身份验证!

在修改数据库之前,请务必与 Mac 建立有效的 SSH 连接,这样您就可以使用其他设备恢复更改(只需重复数据库修改过程,但这次删除您之前添加的行)。

关于xcode - OS X Mavericks 中的自定义登录/锁定屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582995/

相关文章:

macos - 如何在 OSX 上创建没有备份文件的内存映射文件?

java - 使用 hockeyapp 的 cocos2dx 中的 C++ 崩溃报告

ios - 导航后退按钮崩溃

ios - 在 Xcode 单元测试中模拟网络连接? (可能与 AFNetworking 有关)

ios - 未找到自动链接框架

ios - 有没有办法快速在后台线程和当前 View Controller 之间进行通信?

OS X Mavericks 中的 Mamp 错误

更新os x mavericks后Mysql无法启动

elasticsearch - 在 OSX Mavericks 上安装 Elasticsearch

objective-c - AVPlayer长歌缓冲问题