objective-c - SecurityAgentPlugin 在 Yosemite 上不再工作(SFAuthorizationPluginView)

标签 objective-c macos security osx-yosemite sfauthorizationpluginview

我们开发了一个授权插件,它使用 SFAuthorizationPluginView 向用户呈现 UI。此示例基于“旧”NameAndPassword example由 Apple 提供。

我们正在使用此授权插件使用自定义 View 解锁 session (我们已更新 authorizationdb 中的“system.login.screensaver”授权)。这在优胜美地的最后一次更新之前一直有效。自 Yosemite 以来,SFAuthorizationPluginView 在用户登录 session 后不再关闭。我们可以更新示例以强制关闭窗口,方法是:

// confirm that we have authorized the user
[self callbacks]->SetResult ([self engineRef], kAuthorizationResultAllow);

// close the window
NSView* v = [self viewForType:SFViewTypeCredentials]; 
NSWindow* w = [v window]; 
[w close];

现在,一旦用户登录(在我们授权用户之后),SFAuthorizationPluginView 就很好地关闭了,但是某些东西在后台仍然处于事件状态并且用户在 session 中没有焦点(用户无法选择某些东西或在例如文本编辑)。我们必须手动杀死 SecurityAgent 才能再次获得焦点。 (请注意,系统似乎会在 30 秒后自动杀死 SecurityAgent)。

我们在以下页面找到了 Apple 的 NameAndPassword 授权插件示例的固定 2014 版本,但我们在 Yosemite 上面临同样的问题: A fixed 2014 version of Apple's NameAndPassword auth plugin sample

在 Yosemite 发布之前,这段代码对我们来说工作正常。

有人在尝试类似的问题吗?有解决此问题的想法或建议吗?

最佳答案

您应该覆盖 didDeactivate 方法并添加调用,而不是靠近窗口:

[self didDeactivate];

在将结果设置为允许后,在 SFAuthorizationPluginView 类中。

Apple 更新了他们的文档,您可以重新阅读它,其中有一些很好的指南可以在一年前为我节省大量时间和精力。

关于objective-c - SecurityAgentPlugin 在 Yosemite 上不再工作(SFAuthorizationPluginView),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26543149/

相关文章:

ios - iphone 5S 导出视频时慢动作没有了

macos - OS X Webview 不显示 Flash 视频

macos - gfortran : fatal error: no input files compilation terminated

html - SSL 不安全对象

angular - SPA 使用的经过身份验证的 Rest API : how to get CSRF token for login and registration forms?

ios - 如何使用 NSDateFormatter 获取本地时间(从 ICS 文件解析)

objective-c - Cocos2d中如何集成AdBannerView

apache - 我正在考虑阻止访问除这些(SSH/HTTP)之外的我网站的每个部分。这是一个好主意吗?

ios - CoreData加密提交到应用商店时是否需要任何类型的额外文件

javascript - 修改此node.js代码以输出.wav而不是.mp4?